226. Invert Binary Tree
Leetcode link for this question
Discription:
Invert a binary tree.
4
/ \
2 7
/ \ / \
1 3 6 9
to
4
/ \
7 2
/ \ / \
9 6 3 1
Analyze:
Code 1:
#Definition for a binary tree node.
class TreeNode(object):
def __init__(self, x):
self.val = x
self.left = None
self.right = None
#Generate a binary tree by a list ( like, [1,2,None,4,5,6,None,8,9,10,11,12] ) and return the root node.
def gen_Tree(val_list):
if not val_list:
return
root=TreeNode(val_list.pop(0))
#print root.val
le_list=[root]
while val_list:
tmp=le_list.pop(0)
if val_list:
tmp.left=TreeNode(val_list.pop(0))
if tmp.left.val!=None:
le_list.append(tmp.left)
if val_list:
tmp.right=TreeNode(val_list.pop(0))
if tmp.right.val!=None:
le_list.append(tmp.right)
else:
return root
return root
# print the tree by level
def show_Tree(root):
def print_fun(le):
for i in le:
if i!=None:
print i.val,
else:
print 'None',
print ''
cur_le=[root]
next_le=[]
print_fun(cur_le)
while cur_le:
tmp=cur_le.pop(0)
if tmp!=None:# and tmp.val!=None:
if tmp.left:
next_le.append(tmp.left)
else:
next_le.append(None)
if tmp.right:
next_le.append(tmp.right)
else:
next_le.append(None)
if not cur_le:
cur_le=next_le
print_fun(cur_le)
next_le=[]
if not cur_le:
break
return
Solution code
class Solution(object):
def invertTree(self, root):
"""
:type root: TreeNode
:rtype: TreeNode
"""
if root:
root.right,root.left=root.left,root.right
self.invertTree(root.left)
self.invertTree(root.right)
return root
root=gen_Tree([1,2,None,4,5,6,None,8,9,10,11,12])
show_Tree(root)
1
2 None
4 5 None None
6 None 8 9
10 11 None None 12 None None None
None None None None None None
s=Solution()
root=s.invertTree(root)
show_Tree(root)
1
None 2
None None 5 4
9 8 None 6
None None None 12 None None 11 10
None None None None None None
Submission Result:
Status: Accepted
Runtime: 44 ms
Ranking: beats 79.29%