题目:
操作给定的二叉树,将其变换为源二叉树的镜像。
二叉树的镜像定义:源二叉树
8
/ \
6 10
/ \ / \
5 7 9 11
镜像二叉树
8
/ \
10 6
/ \ / \
11 9 7 5
代码:
#定义数节点结构
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution:
# 返回镜像树的根节点
def Mirror(self, root):
if root == None:
return None
#互换左右孩子的值
root.right,root.left=root.left,root.right
#递归处理左子树
self.Mirror(root.right)
#递归处理右子树
self.Mirror(root.left)
分析:
对于镜像的定义以及图解我们可以很清楚的明白,就是调换左右孩子的值。
那么第一步先判断根节点是否为空,然后进行调换根节点的左右孩子的值,然后进行递归处理左右子树。当处理的节点为空以后就不在进行处理,退出递归操作。