File tree Expand file tree Collapse file tree 1 file changed +73
-0
lines changed
binary-tree-level-order-traversal Expand file tree Collapse file tree 1 file changed +73
-0
lines changed Original file line number Diff line number Diff line change
1
+ # https://leetcode.com/problems/binary-tree-level-order-traversal/
2
+
3
+ from typing import Optional , List
4
+
5
+ # Definition for a binary tree node.
6
+ class TreeNode :
7
+ def __init__ (self , val = 0 , left = None , right = None ):
8
+ self .val = val
9
+ self .left = left
10
+ self .right = right
11
+
12
+ class Solution :
13
+ def levelOrder_bfs (self , root : Optional [TreeNode ]) -> List [List [int ]]:
14
+ """
15
+ [Complexity]
16
+ - TC: O(n)
17
+ - SC: O(width) (최악의 경우 O(n)) (결과 res 제외)
18
+
19
+ [Approach]
20
+ 레벨 별로 BFS로 접근
21
+ """
22
+ if not root :
23
+ return []
24
+
25
+ res , level = [], [root ]
26
+
27
+ while level :
28
+ # res에 현재 level 내 node value 추가
29
+ res .append ([node .val for node in level ])
30
+
31
+ # next level의 node로 level 업데이트
32
+ level = [child for node in level for child in (node .left , node .right ) if child ]
33
+ # next_level = []
34
+ # for node in level:
35
+ # if node.left:
36
+ # next_level.append(node.left)
37
+ # if node.right:
38
+ # next_level.append(node.right)
39
+ # level = next_level
40
+
41
+ return res
42
+
43
+ def levelOrder (self , root : Optional [TreeNode ]) -> List [List [int ]]:
44
+ """
45
+ [Complexity]
46
+ - TC: O(n)
47
+ - SC: O(height) (call stack) (결과 res 제외)
48
+
49
+ [Approach]
50
+ 레벨 별로 DFS로 접근
51
+ """
52
+ if not root :
53
+ return []
54
+
55
+ res = []
56
+
57
+ def dfs (node , level ):
58
+ # base condition (각 level의 첫 시작)
59
+ if len (res ) == level :
60
+ res .append ([])
61
+
62
+ # 현재 level에 node.val 추가
63
+ res [level ].append (node .val )
64
+
65
+ # node의 child에 대해 다음 level로 진행
66
+ if node .left :
67
+ dfs (node .left , level + 1 )
68
+ if node .right :
69
+ dfs (node .right , level + 1 )
70
+
71
+ dfs (root , 0 )
72
+
73
+ return res
You can’t perform that action at this time.
0 commit comments