您的位置:首页 > 其它

226. Invert Binary Tree

2016-07-18 13:07 197 查看

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%
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: