Skip to content

Commit 920eded

Browse files
author
Kohei Asai
authored
102. Binary Tree Level Order Traversal (#98)
1 parent aa31d49 commit 920eded

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { createBinaryTreeNode } from "../utilities/TreeNode";
2+
import levelOrder from "./binaryTreeLevelOrderTraversal";
3+
4+
describe("102. Binary Tree Level Order Traversal", () => {
5+
const TEST_CASES = new Map([
6+
[[1, null, 2, 3], [[1], [2], [3]]],
7+
[[4, 4, 5, 1, 2], [[4], [4, 5], [1, 2]]],
8+
[
9+
[1, null, 1, null, 1, null, 1, null, 1, null, 1, 2],
10+
[[1], [1], [1], [1], [1], [1], [2]]
11+
],
12+
[[1], [[1]]],
13+
[[], []]
14+
]);
15+
16+
for (const [tree, expected] of TEST_CASES) {
17+
it(`returns [${expected.map(
18+
level => `[${level}]`
19+
)}] when called with [${tree}]`, () => {
20+
expect(levelOrder(createBinaryTreeNode(tree))).toEqual(expected);
21+
});
22+
}
23+
});
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { TreeNode } from "../utilities/TreeNode";
2+
3+
// 102. Binary Tree Level Order Traversal
4+
// https://leetcode.com/problems/binary-tree-level-order-traversal/
5+
export default function levelOrder<T>(root: TreeNode<T> | null): T[][] {
6+
const valuesEachLevel: T[][] = [];
7+
8+
function traverse(node: TreeNode<T> | null, level: number) {
9+
if (node === null) return;
10+
11+
if (valuesEachLevel[level]) {
12+
valuesEachLevel[level].push(node.val);
13+
} else {
14+
valuesEachLevel[level] = [node.val];
15+
}
16+
17+
traverse(node.left, level + 1);
18+
traverse(node.right, level + 1);
19+
}
20+
21+
traverse(root, 0);
22+
23+
return valuesEachLevel;
24+
}

0 commit comments

Comments
 (0)