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%
本文介绍了一种翻转二叉树的算法实现,并通过具体的代码示例展示了如何使用递归方式来完成二叉树节点的左右子树互换过程。文章提供了完整的Python代码及运行结果。

被折叠的 条评论
为什么被折叠?



