@@ -16,46 +16,85 @@ const levelOrder = (root) => {
16
16
let list = [ [ root . val ] ] , children = 2 , visitedChildren = 0 , nullChildren = 0 , level = 1 , queue = [ root ] , levelVal = [ ] ;
17
17
18
18
while ( queue . length > 0 ) {
19
- let curr = queue . shift ( ) , left = curr . left , right = curr . right ;
20
19
console . log ( `-> level:${ level } , children:${ children } , visitedChildren:${ visitedChildren } , nullChildren:${ nullChildren } , levelVal:${ levelVal } ` )
21
- console . log ( curr )
22
- if ( null !== left ) {
23
- queue . push ( left ) ;
24
- visitedChildren ++ ;
25
- levelVal . push ( left . val ) ;
26
- } else {
27
- nullChildren ++ ;
28
- }
29
20
30
- if ( null !== right ) {
31
- queue . push ( right ) ;
32
- visitedChildren ++ ;
33
- levelVal . push ( right . val ) ;
34
- } else {
35
- nullChildren ++ ;
36
- }
21
+ let l = queue . length , singleLevel = [ ] ;
22
+
23
+ while ( l > 0 ) {
24
+ console . log ( "queue" ) ;
25
+ console . log ( list ) ;
26
+ console . log ( queue ) ;
27
+ console . log ( l ) ;
28
+ console . log ( queue . length ) ;
37
29
38
- console . log ( `--> level: ${ level } , children: ${ children } , visitedChildren: ${ visitedChildren } , nullChildren: ${ nullChildren } , levelVal: ${ levelVal } ` )
30
+ let curr = queue . shift ( ) , left = curr . left , right = curr . right ;
39
31
40
- if ( children === ( visitedChildren + nullChildren ) ) {
32
+ if ( null !== left ) {
33
+ queue . push ( left ) ;
34
+ singleLevel . push ( left . val ) ;
35
+ }
41
36
42
- // if (undefined === list[level]) {
43
- if ( levelVal . length > 0 ) list [ level ] = levelVal ;
44
- // } else {
45
- // list[level] = list[level].concat(levelVal)
46
- // }
47
- levelVal = [ ] ;
48
- children *= 2 ;
49
- level ++ ;
50
- visitedChildren = 0 ;
51
- nullChildren *= 2 ;
37
+ if ( null !== right ) {
38
+ queue . push ( right ) ;
39
+ singleLevel . push ( right . val ) ;
40
+ }
41
+
42
+ l -- ;
52
43
}
44
+
45
+ if ( singleLevel . length > 0 ) list . push ( singleLevel ) ;
53
46
}
54
47
55
48
console . log ( list ) ;
56
49
57
50
return list ;
58
51
} ;
52
+ // const levelOrder = (root) => {
53
+ // if (null === root) return [];
54
+ //
55
+ // let list = [[root.val]], children = 2, visitedChildren = 0, nullChildren = 0, level = 1, queue = [root], levelVal = [];
56
+ //
57
+ // while (queue.length > 0) {
58
+ // let curr = queue.shift(), left = curr.left, right = curr.right;
59
+ // console.log(`-> level:${level}, children:${children}, visitedChildren:${visitedChildren}, nullChildren:${nullChildren}, levelVal:${levelVal}`)
60
+ // console.log(curr)
61
+ // if (null !== left) {
62
+ // queue.push(left);
63
+ // visitedChildren++;
64
+ // levelVal.push(left.val);
65
+ // } else {
66
+ // nullChildren++;
67
+ // }
68
+ //
69
+ // if (null !== right) {
70
+ // queue.push(right);
71
+ // visitedChildren++;
72
+ // levelVal.push(right.val);
73
+ // } else {
74
+ // nullChildren++;
75
+ // }
76
+ //
77
+ // console.log(`--> level:${level}, children:${children}, visitedChildren:${visitedChildren}, nullChildren:${nullChildren}, levelVal:${levelVal}`)
78
+ //
79
+ // if (children === (visitedChildren + nullChildren)) {
80
+ //
81
+ // // if (undefined === list[level]) {
82
+ // if (levelVal.length > 0) list[level] = levelVal;
83
+ // // } else {
84
+ // // list[level] = list[level].concat(levelVal)
85
+ // // }
86
+ // levelVal = [];
87
+ // children *= 2;
88
+ // level++;
89
+ // visitedChildren = 0;
90
+ // nullChildren *= 2;
91
+ // }
92
+ // }
93
+ //
94
+ // console.log(list);
95
+ //
96
+ // return list;
97
+ // };
59
98
60
99
// [1,2,null,3,null,4,null,5]
61
100
let x =
0 commit comments