Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 435e5c3

Browse files
added Invert Binary Tree (Easy)
1 parent 48523eb commit 435e5c3

File tree

4 files changed

+132
-0
lines changed

4 files changed

+132
-0
lines changed

‎Easy/InvertBinaryTree/README.md‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Invert Binary Tree
2+
3+
[Leetcode Link](https://leetcode.com/problems/invert-binary-tree/)
4+
5+
## Problem:
6+
7+
Invert a binary tree.
8+
9+
## Example:
10+
11+
```
12+
Input:
13+
4
14+
/ \
15+
2 7
16+
/ \ / \
17+
1 3 6 9
18+
19+
Output:
20+
4
21+
/ \
22+
7 2
23+
/ \ / \
24+
9 6 3 1
25+
```

‎Easy/InvertBinaryTree/solution.py‎

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
from utils import TreeNode
2+
3+
4+
class Solution:
5+
def invertTree(self, root: TreeNode) -> TreeNode:
6+
# base case: if we hit null child
7+
if not root:
8+
return
9+
10+
# swap left and right child
11+
temp = root.left
12+
root.left = root.right
13+
root.right = temp
14+
# traverse recursively
15+
self.invertTree(root.left)
16+
self.invertTree(root.right)
17+
18+
return root
19+
20+
21+
sol = Solution()
22+
root = TreeNode(4, left=TreeNode(2, left=TreeNode(1), right=TreeNode(
23+
3)), right=TreeNode(7, left=TreeNode(6), right=TreeNode(9)))
24+
# root = TreeNode(1)
25+
# root = None
26+
# root = TreeNode(1, TreeNode(2))
27+
print("Before inversion:", root)
28+
29+
inverted = sol.invertTree(root)
30+
print("Inverted Tree:", inverted)

‎Easy/InvertBinaryTree/utils.py‎

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# Leetcode Treenode structure and in,pre,postorder and leetcode representation of structure
2+
class TreeNode:
3+
def __init__(self, val=0, left=None, right=None):
4+
self.val = val
5+
self.left = left
6+
self.right = right
7+
8+
# inorder traversal list (left,self,right)
9+
def inorder(self):
10+
# recursive helper
11+
def dfs(node):
12+
if not node:
13+
return
14+
15+
dfs(node.left)
16+
traversal.append(node.val)
17+
dfs(node.right)
18+
19+
traversal = list()
20+
dfs(self)
21+
return traversal
22+
23+
# preorder traversal list (left,self,right)
24+
def preorder(self):
25+
# recursive helper
26+
def bfs(node):
27+
if not node:
28+
return
29+
30+
traversal.append(node.val)
31+
bfs(node.left)
32+
bfs(node.right)
33+
34+
traversal = list()
35+
bfs(self)
36+
return traversal
37+
38+
# postorder traversal list (left,self,right)
39+
def postorder(self):
40+
# recursive helper
41+
def dfs(node):
42+
if not node:
43+
return
44+
45+
dfs(node.left)
46+
dfs(node.right)
47+
traversal.append(node.val)
48+
49+
traversal = list()
50+
dfs(self)
51+
return traversal
52+
53+
# leetcode representation of trees (level-by-level, and explicit None for absence of children)
54+
def __str__(self):
55+
tree = list()
56+
queue = list()
57+
queue.append(self)
58+
while queue and not all(node is None for node in queue):
59+
currentNode = queue.pop(0)
60+
if currentNode is None:
61+
tree.append(None)
62+
else:
63+
tree.append(currentNode.val)
64+
queue.append(currentNode.left)
65+
queue.append(currentNode.right)
66+
return str(tree)
67+
68+
69+
# test driver
70+
if __name__ == "__main__":
71+
root = TreeNode(1, TreeNode(2, right=TreeNode(4)),
72+
TreeNode(3, left=TreeNode(5, right=TreeNode(6))))
73+
print("inorder:", root.inorder())
74+
print("preorder:", root.preorder())
75+
print("postorder:", root.postorder())
76+
print("leetcode:", root)

‎README.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ Languages used: Java and Python
4545
- [N-ary Tree Postorder Traversal](Easy/NaryTreePostorderTraversal)
4646
- [Pascal's Triangle](Easy/PascalsTriangle)
4747
- [Merge Two Binary Trees](Easy/MergeTwoBinaryTrees)
48+
- [Invert Binary Tree](Easy/InvertBinaryTree)
4849
- Medium
4950
- [Minimum Add to Make Parentheses Valid](Medium/MinimumAddtoMakeParenthesesValid)
5051
- [Distribute Coins in Binary Tree](Medium/DistributionCoinsInBinaryTree)

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /