题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5
解题思路
递归
首先拿到这道题,因为他是要在树的结构上做改动,而不是输出一个镜像序列,因此需要递归对树进行改变。首先从根节点开始,将根节点的左孩子和右孩子替换,对于上述例子,仅对8的左右孩子交换后得到:
8 / \ 10 6 / \ / \ 9 11 5 7
然后再递归的对左右子节点进行操作,这里为10和6,所以代码就很明确了。
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution:
def Mirror(self, root):
if root is None or (root.left is None and root.right is None):
return root
temp = root.left
root.left = root.right
root.right = temp
if root.left:
self.Mirror(root.left)
if root.right:
self.Mirror(root.right)
return root