8000 Updated levelOrder.js · jonasraoni/leetcode@022cae3 · GitHub
[go: up one dir, main page]

Skip to content 8000

Commit 022cae3

Browse files
committed
Updated levelOrder.js
1 parent e3f3e65 commit 022cae3

File tree

1 file changed

+13
-15
lines changed

1 file changed

+13
-15
lines changed

medium/levelOrder.js

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,26 +15,24 @@
1515
* @return {number[][]}
1616
*/
1717
var levelOrder = function(root) {
18-
if (!root)
19-
return [];
2018
const levels = [];
21-
for (let tuple, stack = [[root, 0]]; tuple = stack.pop();) {
22-
const [node, level] = tuple;
19+
new function push(node = root, level = 0) {
20+
if (!node)
21+
return;
2322
(levels[level] ??= []).push(node.val);
24-
for (const leaf of [node.right, node.left])
25-
leaf && stack.push([leaf, level + 1]);
26-
}
23+
for (const leaf of [node.left, node.right])
24+
push(leaf, level + 1);
25+
};
2726
return levels;
2827
};
2928

30-
var levelOrder2 = function(root) {
29+
var levelOrderIterative = function(root) {
3130
const levels = [];
32-
!function navigate(node, levels, level) {
33-
if (!node)
34-
return;
35-
(levels[level] ??= []).push(node.val);
36-
for (const leaf of [node.left, node.right])
37-
navigate(leaf, levels, level + 1);
38-
}(root, levels, 0);
31+
for (let take, queue = root ? [root] : []; take = queue.length;) {
32+
for (let level = levels[levels.length] = [], node; take--; ) {
33+
level.push((node = queue.shift()).val);
34+
queue.push(...[node.left, node.right].filter(Boolean));
35+
}
36+
}
3937
return levels;
4038
};

0 commit comments

Comments
 (0)
0