File tree Expand file tree Collapse file tree 1 file changed +77
-0
lines changed Expand file tree Collapse file tree 1 file changed +77
-0
lines changed Original file line number Diff line number Diff line change
1
+ # https://leetcode.com/problems/invert-binary-tree/
2
+
3
+ from typing import Optional
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 invertTree_recur1 (self , root : Optional [TreeNode ]) -> Optional [TreeNode ]:
14
+ """
15
+ [Complexity]
16
+ - TC: O(n) (๋ชจ๋ ๋
ธ๋ ๋ฐฉ๋ฌธ)
17
+ - SC: O(height) (call stack)
18
+
19
+ [Approach]
20
+ DFS ์ฒ๋ผ recursive ํ๊ฒ ์ ๊ทผํ๋ค.
21
+ """
22
+
23
+ def invert (node ):
24
+ # base condition
25
+ if not node :
26
+ return
27
+
28
+ # recur (& invert the children)
29
+ node .left , node .right = invert (node .right ), invert (node .left )
30
+
31
+ return node
32
+
33
+ return invert (root )
34
+
35
+ def invertTree_recur (self , root : Optional [TreeNode ]) -> Optional [TreeNode ]:
36
+ """
37
+ [Complexity]
38
+ - TC: O(n)
39
+ - SC: O(height) (call stack)
40
+
41
+ [Approach]
42
+ recursive ํ ๋ฐฉ๋ฒ์์ base condition ์ฒ๋ฆฌ ๋ก์ง์ ๋ ์งง์ ์ฝ๋๋ก ๋ํ๋ผ ์ ์๋ค.
43
+ """
44
+
45
+ def invert (node ):
46
+ if node :
47
+ # recur (& invert the children)
48
+ node .left , node .right = invert (node .right ), invert (node .left )
49
+ return node
50
+
51
+ return invert (root )
52
+
53
+ def invertTree (self , root : Optional [TreeNode ]) -> Optional [TreeNode ]:
54
+ """
55
+ [Complexity]
56
+ - TC: O(n)
57
+ - SC: O(width) (queue)
58
+
59
+ [Approach]
60
+ BFS ์ฒ๋ผ iterative ํ๊ฒ ์ ๊ทผํ๋ค.
61
+ """
62
+ from collections import deque
63
+
64
+ q = deque ([root ])
65
+
66
+ while q :
67
+ node = q .popleft ()
68
+
69
+ if node :
70
+ # invert the children
71
+ node .left , node .right = node .right , node .left
72
+
73
+ # add to queue
74
+ q .append (node .left )
75
+ q .append (node .right )
76
+
77
+ return root
You canโt perform that action at this time.
0 commit comments