File tree Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Original file line number Diff line number Diff line change
1
+ from typing import Optional
2
+ from unittest import TestCase , main
3
+
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
+
13
+ class Solution :
14
+ def invertTree (self , root : Optional [TreeNode ]) -> Optional [TreeNode ]:
15
+ return self .solve_dfs (root )
16
+
17
+ """
18
+ Runtime: 0 ms (Beats 100.00%)
19
+ Time Complexity: O(n)
20
+ > 트리의 모든 node를 방문하므로 O(n)
21
+
22
+ Memory: 16.53 MB (Beats 25.95%)
23
+ Space Complexity: O(n)
24
+ > stack의 최대 크기는 트리의 최장 경로를 이루는 node의 갯수이고, 최악의 경우 트리의 한 쪽으로 모든 node가 이어져있는 경우이므로 O(n), upper bound
25
+ """
26
+ def solve_dfs (self , root : Optional [TreeNode ]) -> Optional [TreeNode ]:
27
+ if root is None :
28
+ return root
29
+
30
+ stack = [root ]
31
+ while stack :
32
+ curr_node = stack .pop ()
33
+ curr_node .left , curr_node .right = curr_node .right , curr_node .left
34
+ if curr_node .left :
35
+ stack .append (curr_node .left )
36
+ if curr_node .right :
37
+ stack .append (curr_node .right )
38
+
39
+ return root
40
+
41
+
42
+ class _LeetCodeTestCases (TestCase ):
43
+ def test_1 (self ):
44
+ return
45
+
46
+
47
+ if __name__ == '__main__' :
48
+ main ()
You can’t perform that action at this time.
0 commit comments