File tree Expand file tree Collapse file tree 1 file changed +39
-1
lines changed Expand file tree Collapse file tree 1 file changed +39
-1
lines changed Original file line number Diff line number Diff line change 15
15
- worst case: O(N), skewed tree
16
16
'''
17
17
class Solution :
18
- def invertTree (self , root : Optional [TreeNode ]) -> Optional [TreeNode ]:
18
+ '''
19
+ DFS
20
+ '''
21
+ def invertTreeRecursive (self , root : Optional [TreeNode ]) -> Optional [TreeNode ]:
19
22
if not root :
20
23
return None
21
24
@@ -25,3 +28,38 @@ def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
25
28
self .invertTree (root .right )
26
29
27
30
return root
31
+
32
+ '''
33
+ BFS
34
+ - 직관적인 stack 풀이
35
+ '''
36
+ def invertTree (self , root : Optional [TreeNode ]) -> Optional [TreeNode ]:
37
+ stack = [root ]
38
+
39
+ while stack :
40
+ node = stack .pop ()
41
+ if not node :
42
+ continue
43
+
44
+ node .left , node .right = node .right , node .left
45
+ stack .append (node .left )
46
+ stack .append (node .right )
47
+
48
+ return root
49
+
50
+ '''
51
+ - 참고용 deque 풀이
52
+ '''
53
+ def invertTreeDeque (self , root : Optional [TreeNode ]) -> Optional [TreeNode ]:
54
+ dq = deque ([root ])
55
+
56
+ while dq :
57
+ node = dq .popleft ()
58
+ if not node :
59
+ continue
60
+
61
+ node .left , node .right = node .right , node .left
62
+ dq .append (node .left )
63
+ dq .append (node .right )
64
+
65
+ return root
You can’t perform that action at this time.
0 commit comments