剑指Offer编程题-二叉树的镜像

题目:二叉树的镜像

题目描述:操作给定的二叉树,将其变换为源二叉树的镜像。

输入描述:

二叉树的镜像定义:
          源二叉树 
            8
           /  \
          6   10
         / \  / \
        5  7 9 11
        镜像二叉树
            8
           /  \
          10   6
         / \  / \
        11 9 7  5

解题思路

很容易想到用递归求解,先判断root是否为空,不为空的话则做交换操作,否则直接返回root。交换时先定义一个temp保存root的左结点,然后root左结点指向递归后的右结点,右结点指向递归后的temp结点。

实现

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 root:
            temp = root.left
            root.left = self.Mirror(root.right)
            root.right = self.Mirror(temp)
        return root