题目
请完成一个函数,输入一个二叉树,该函数输出它的镜像。
例如输入:
4
/
2 7
/ \ /
1 3 6 9
镜像输出:
4
/
7 2
/ \ /
9 6 3 1
示例1:
输入:root = [4,2,7,1,3,6,9]
输出:[4,7,2,9,6,3,1]
思路:其实和互换变量一样,通过中间变量存储左子树的变量才能做镜像
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def mirrorTree(self,root):
if not root:return
tmp=root.left
root.left=mirrorTree(root.right)
root.right=mirrorTree(tmp)
return root
Q: 为何需要暂存 rootroot 的左子节点?
A: 在递归右子节点 “root.left = mirrorTree(root.right);root.left=mirrorTree(root.right);” 执行完毕后, root.leftroot.left 的值已经发生改变,此时递归左子节点 mirrorTree(root.left)mirrorTree(root.left) 则会出问题。