@@ -22,18 +22,6 @@ export function callbackCollectNodes(root, collect, level) {
2222 }
2323}
2424
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-
3725export function traverseInOrderCollector ( root , collect , level , callbackFn ) {
3826 if ( root ?. left !== null ) {
3927 traverseInOrderCollector ( root ?. left , collect , level + 1 , callbackFn ) ;
@@ -91,24 +79,26 @@ export function buildTree(indexes) {
9179}
9280
9381export function flatTree ( root ) {
94- let nodeCollector = { } ;
82+ const nodeCollector = [ ] ;
9583
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+ }
10288
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 ) ;
10999
110100 const output = [ ] ;
111- nodeCollector [ lastLevel ] . forEach ( ( node ) => {
101+ nodeCollector . forEach ( ( node ) => {
112102 output . push ( node . data ) ;
113103 } ) ;
114104
0 commit comments