Skip to content

Commit 205887e

Browse files
committed
feat: binary-tree-level-order-traversal
1 parent d80b18c commit 205887e

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed
+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
from typing import List
2+
from collections import deque
3+
4+
5+
# Definition for a binary tree node.
6+
class TreeNode:
7+
def __init__(self, x):
8+
self.val = x
9+
self.left = None
10+
self.right = None
11+
12+
class Solution:
13+
"""
14+
102. 二叉树的层序遍历
15+
https://leetcode-cn.com/problems/binary-tree-level-order-traversal/
16+
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
17+
"""
18+
# dfs
19+
def levelOrder(self, root: TreeNode) -> List[List[int]]:
20+
res = []
21+
def dfs(level, node):
22+
if not node:
23+
return
24+
25+
if len(res) == level:
26+
res.append([])
27+
28+
res[level].append(node.val)
29+
dfs(level + 1, node.left)
30+
dfs(level + 1, node.right)
31+
32+
dfs(0, root)
33+
return res
34+
35+
# bfs
36+
def levelOrderByBfs(self, root: TreeNode) -> List[List[int]]:
37+
res = []
38+
queue = deque()
39+
queue.append(root)
40+
41+
while queue:
42+
size = len(queue)
43+
level = []
44+
for _ in range(size):
45+
cur = queue.popleft()
46+
if not cur:
47+
continue
48+
49+
level.append(cur.val)
50+
queue.append(cur.left)
51+
queue.append(cur.right)
52+
53+
if level:
54+
res.append(level)
55+
56+
return res
57+
58+
59+

0 commit comments

Comments
 (0)