题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述:
二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5
思路:递归!就是不断的对左子树做镜像,对右子树做镜像。交换完所有非叶节点的左右子节点后,就完成了。注意,不要盲目return None或者return root.....牛客的测试用例真的不全。
python题解:
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
# 返回镜像树的根节点
def Mirror(self, root):
# write code here
if not root:
return
if not root.left and not root.right: #如果左右节点都为空,说明到叶节点了,返回
return
tmp=root.left
root.left=root.right
root.right=tmp
if root.left: #如果左节点不为空,将左节点的子树转换为镜像
self.Mirror(root.left)
if root.right: #如果右节点不为空,将右节点的子树转换为镜像
self.Mirror(root.right)