File tree 1 file changed +59
-0
lines changed
1 file changed +59
-0
lines changed Original file line number Diff line number Diff line change
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
+
You can’t perform that action at this time.
0 commit comments