Skip to content

Commit 5f344b1

Browse files
committedMar 13, 2025Β·
feat: binary-tree-level-order-traversal solution
1 parent e9a055c commit 5f344b1

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed
 
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* class TreeNode {
4+
* val: number
5+
* left: TreeNode | null
6+
* right: TreeNode | null
7+
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
8+
* this.val = (val===undefined ? 0 : val)
9+
* this.left = (left===undefined ? null : left)
10+
* this.right = (right===undefined ? null : right)
11+
* }
12+
* }
13+
*/
14+
/**
15+
* μ΄μ§„νŠΈλ¦¬ 레벨 순회 ν•˜κΈ°
16+
* μ•Œκ³ λ¦¬μ¦˜ λ³΅μž‘λ„
17+
* - μ‹œκ°„ λ³΅μž‘λ„: O(n)
18+
* - 곡간 λ³΅μž‘λ„: O(n)
19+
* @param root
20+
*/
21+
function levelOrder(root: TreeNode | null): number[][] {
22+
if(!root) return []
23+
let result = []
24+
const queue: TreeNode[] = [root]
25+
26+
while (queue.length > 0) {
27+
const levelValues: number[] = []
28+
29+
// ν˜„μž¬ 레벨의 크기 (ν˜„μž¬ 큐에 μžˆλŠ” ν˜„μž¬ λ ˆλ²¨μ— μ†ν•œ λ…Έλ“œμ˜ 수) 만큼 순회
30+
for (let i = 0; i < queue.length; i++) {
31+
const node = queue.shift()!
32+
33+
// ν˜„μž¬ λ…Έλ“œμ˜ 값을 ν˜„μž¬ 레벨의 κ°’ 배열에 μΆ”κ°€
34+
levelValues.push(node.val)
35+
36+
if (node.left) {
37+
queue.push(node.left);
38+
}
39+
if (node.right) {
40+
queue.push(node.right);
41+
}
42+
}
43+
44+
result.push(levelValues)
45+
}
46+
47+
return result;
48+
}

0 commit comments

Comments
 (0)
Please sign in to comment.