Skip to content

Commit ab0c43e

Browse files
committed
✨ [102] dfs without lvl variables
1 parent 35824ec commit ab0c43e

File tree

2 files changed

+92
-60
lines changed

2 files changed

+92
-60
lines changed

102/my_solution.js

+67-28
Original file line numberDiff line numberDiff line change
@@ -16,46 +16,85 @@ const levelOrder = (root) => {
1616
let list = [[root.val]], children = 2, visitedChildren = 0, nullChildren = 0, level = 1, queue = [root], levelVal = [];
1717

1818
while (queue.length > 0) {
19-
let curr = queue.shift(), left = curr.left, right = curr.right;
2019
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-
}
2920

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);
3729

38-
console.log(`--> level:${level}, children:${children}, visitedChildren:${visitedChildren}, nullChildren:${nullChildren}, levelVal:${levelVal}`)
30+
let curr = queue.shift(), left = curr.left, right = curr.right;
3931

40-
if (children === (visitedChildren + nullChildren)) {
32+
if (null !== left) {
33+
queue.push(left);
34+
singleLevel.push(left.val);
35+
}
4136

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--;
5243
}
44+
45+
if (singleLevel.length > 0) list.push(singleLevel);
5346
}
5447

5548
console.log(list);
5649

5750
return list;
5851
};
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+
// };
5998

6099
// [1,2,null,3,null,4,null,5]
61100
let x =

102/solution.js

+25-32
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,40 @@
1-
/**
2-
* Definition for a binary tree node.
3-
* function TreeNode(val, left, right) {
4-
* this.val = (val===undefined ? 0 : val)
5-
* this.left = (left===undefined ? null : left)
6-
* this.right = (right===undefined ? null : right)
7-
* }
8-
*/
1+
class TreeNode {
2+
constructor(val, left, right) {
3+
this.val = (val === undefined ? 0 : val);
4+
this.left = (left === undefined ? null : left);
5+
this.right = (right === undefined ? null : right);
6+
}
7+
}
8+
99
/**
1010
* @param {TreeNode} root
1111
* @return {number[][]}
1212
*/
1313
const levelOrder = (root) => {
1414
if (null === root) return [];
1515

16-
let list = [[root.val]], children = 2, visitedChildren = 0, nullChildren = 0, level = 1, queue = [root], levelVal = [];
16+
let list = [[root.val]], queue = [root];
1717

1818
while (queue.length > 0) {
19-
let curr = queue.shift(), left = curr.left, right = curr.right;
20-
21-
if (null !== left) {
22-
queue.push(left);
23-
visitedChildren++;
24-
levelVal.push(left.val);
25-
} else {
26-
nullChildren++;
27-
}
19+
let l = queue.length, singleLevel = [];
2820

29-
if (null !== right) {
30-
queue.push(right);
31-
visitedChildren++;
32-
levelVal.push(right.val);
33-
} else {
34-
nullChildren++;
35-
}
21+
while (l > 0) {
22+
let curr = queue.shift(), left = curr.left, right = curr.right;
23+
24+
if (null !== left) {
25+
queue.push(left);
26+
singleLevel.push(left.val);
27+
}
3628

37-
if (children === (visitedChildren + nullChildren)) {
38-
if (levelVal.length > 0) list[level] = levelVal;
39-
levelVal = [];
40-
level++;
41-
children *= 2;
42-
visitedChildren = 0;
43-
nullChildren *= 2;
29+
if (null !== right) {
30+
queue.push(right);
31+
singleLevel.push(right.val);
32+
}
33+
34+
l--;
4435
}
36+
37+
if (singleLevel.length > 0) list.push(singleLevel);
4538
}
4639

4740
return list;

0 commit comments

Comments
 (0)