@@ -22,18 +22,6 @@ export function callbackCollectNodes(root, collect, level) {
22
22
}
23
23
}
24
24
25
- export function callbackCollectFlat ( root , collect , level ) {
26
- const _level = 0 * level ; // set a unique key to use dict as a list
27
- if ( root ) {
28
- if ( collect ?. [ _level ] === undefined ) {
29
- // eslint-disable-next-line no-param-reassign
30
- collect [ _level ] = [ root ] ;
31
- } else {
32
- collect [ _level ] . push ( root ) ;
33
- }
34
- }
35
- }
36
-
37
25
export function traverseInOrderCollector ( root , collect , level , callbackFn ) {
38
26
if ( root ?. left !== null ) {
39
27
traverseInOrderCollector ( root ?. left , collect , level + 1 , callbackFn ) ;
@@ -91,24 +79,26 @@ export function buildTree(indexes) {
91
79
}
92
80
93
81
export function flatTree ( root ) {
94
- let nodeCollector = { } ;
82
+ const nodeCollector = [ ] ;
95
83
96
- nodeCollector = traverseInOrderCollector (
97
- root ,
98
- nodeCollector ,
99
- __INITIAL_LEVEL__ ,
100
- callbackCollectFlat
101
- ) ;
84
+ function traverseInOrderFlat ( node ) {
85
+ if ( node ?. left !== null ) {
86
+ traverseInOrderFlat ( node ?. left ) ;
87
+ }
102
88
103
- const lastLevel = parseInt (
104
- Object . keys ( nodeCollector )
105
- . sort ( ( a , b ) => parseInt ( b , __RADIX__ ) - parseInt ( a , __RADIX__ ) )
106
- . shift ( ) ,
107
- __RADIX__
108
- ) ;
89
+ if ( node ) {
90
+ nodeCollector . push ( node ) ;
91
+ }
92
+
93
+ if ( node ?. right !== null ) {
94
+ traverseInOrderFlat ( node ?. right ) ;
95
+ }
96
+ }
97
+
98
+ traverseInOrderFlat ( root ) ;
109
99
110
100
const output = [ ] ;
111
- nodeCollector [ lastLevel ] . forEach ( ( node ) => {
101
+ nodeCollector . forEach ( ( node ) => {
112
102
output . push ( node . data ) ;
113
103
} ) ;
114
104
0 commit comments