Skip to content

Commit eca856c

Browse files
committed
- Invert Binary Tree #226
1 parent e6dba98 commit eca856c

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed

invert-binary-tree/ayosecu.py

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
from typing import Optional
2+
3+
class TreeNode:
4+
def __init__(self, val=0, left=None, right=None):
5+
self.val = val
6+
self.left = left
7+
self.right = right
8+
9+
class Solution:
10+
"""
11+
- Time Complexity: O(N), N = The number of nodes
12+
- Space complexity: O(H), H = The height of the tree
13+
"""
14+
def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
15+
if not root:
16+
return
17+
18+
root.left, root.right = root.right, root.left
19+
20+
self.invertTree(root.left)
21+
self.invertTree(root.right)
22+
23+
return root
24+
25+
def build_tree(values):
26+
from collections import deque
27+
if not values:
28+
return None
29+
root = TreeNode(values[0])
30+
queue = deque([root])
31+
i = 1
32+
while i < len(values):
33+
node = queue.popleft()
34+
if values[i] is not None:
35+
node.left = TreeNode(values[i])
36+
queue.append(node.left)
37+
i += 1
38+
if i < len(values) and values[i] is not None:
39+
node.right = TreeNode(values[i])
40+
queue.append(node.right)
41+
i += 1
42+
return root
43+
44+
def tree_to_list(root):
45+
from collections import deque
46+
if not root:
47+
return []
48+
result = []
49+
queue = deque([root])
50+
while queue:
51+
node = queue.popleft()
52+
if node:
53+
result.append(node.val)
54+
queue.append(node.left)
55+
queue.append(node.right)
56+
else:
57+
result.append(None)
58+
# Remove trailing None
59+
while result and result[-1] is None:
60+
result.pop()
61+
return result
62+
63+
tc = [
64+
([4,2,7,1,3,6,9], [4,7,2,9,6,3,1]),
65+
([2,1,3], [2,3,1]),
66+
([], [])
67+
]
68+
69+
sol = Solution()
70+
for i, (n, e) in enumerate(tc, 1):
71+
r = tree_to_list(sol.invertTree(build_tree(n)))
72+
print(f"TC {i} is Passed!" if r == e else f"TC {i} is Failed! - Expected: {e}, Result: {r}")

0 commit comments

Comments
 (0)