本文共 696 字,大约阅读时间需要 2 分钟。
请完成一个函数,输入一个二叉树,该函数输出它的镜像。
例如输入:
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 = Noneclass 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) 则会出问题。转载地址:http://kiwsi.baihongyu.com/