Skip to content

Commit bf1cca5

Browse files
committed
Feat: 102. Binary Tree Level Order Traversal
1 parent 4af9c25 commit bf1cca5

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
// class TreeNode {
2+
// val: number;
3+
// left: TreeNode | null;
4+
// right: TreeNode | null;
5+
// constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
6+
// this.val = val === undefined ? 0 : val;
7+
// this.left = left === undefined ? null : left;
8+
// this.right = right === undefined ? null : right;
9+
// }
10+
// }
11+
12+
/**
13+
* https://leetcode.com/problems/binary-tree-level-order-traversal
14+
* T.C. O(n)
15+
* S.C. O(n)
16+
*/
17+
function levelOrder(root: TreeNode | null): number[][] {
18+
const result: number[][] = [];
19+
function dfs(node: TreeNode | null, level: number) {
20+
if (!node) return;
21+
if (!result[level]) result[level] = [];
22+
result[level].push(node.val);
23+
dfs(node.left, level + 1);
24+
dfs(node.right, level + 1);
25+
}
26+
dfs(root, 0);
27+
return result;
28+
}
29+
30+
/**
31+
* bfs
32+
* T.C. O(n)
33+
* S.C. O(n)
34+
*/
35+
function levelOrder(root: TreeNode | null): number[][] {
36+
const result: number[][] = [];
37+
if (!root) return result;
38+
39+
const queue: TreeNode[] = [root];
40+
let start = 0;
41+
42+
while (queue[start]) {
43+
const levelSize = queue.length - start;
44+
const currentLevel: number[] = [];
45+
46+
for (let i = 0; i < levelSize; i++) {
47+
const node = queue[start++];
48+
currentLevel.push(node.val);
49+
if (node.left) queue.push(node.left);
50+
if (node.right) queue.push(node.right);
51+
}
52+
53+
result.push(currentLevel);
54+
}
55+
56+
return result;
57+
}

0 commit comments

Comments
 (0)