LeetCode:226. Invert Binary Tree
Invert a binary tree.
Example:
Input:
4
/ \
2 7
/ \ / \
1 3 6 9
Output:
4
/ \
7 2
/ \ / \
9 6 3 1
翻转二叉树
思路:递归翻转左右子树
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def invertTree(self, root: TreeNode) -> TreeNode:
if(root == None):
return None
if(root.left == None and root.right == None):
return root
else:
tmp = root.right
root.right = root.left
root.left = tmp
if (root.left != None):
self.invertTree(root.left)
if (root.right != None):
self.invertTree(root.right)
return root
注意下停止条件:节点为空或者左右子节点都为空的情况。
思路二:迭代
根据上面的递归的方法,改写成迭代的形式:
class Solution:
def invertTree(self, root: TreeNode) -> TreeNode:
queue = []
if (root != None):
queue.append(root)
while(len(queue) > 0):
t = queue.pop(0)
leftTmp = t.left
t.left = t.right
t.right = leftTmp
if (t.left != None):
queue.append(t.left)
if (t.right != None):
queue.append(t.right)
return root
THE END.