剑指Offer 18. 二叉树的镜像 (二叉树)

Posted huangqiancun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指Offer 18. 二叉树的镜像 (二叉树)相关的知识,希望对你有一定的参考价值。

题目描述

操作给定的二叉树,将其变换为源二叉树的镜像。

输入描述:

二叉树的镜像定义:源二叉树 
    	    8
    	   /      	  6   10
    	 /   /     	5  7 9 11
    	镜像二叉树
    	    8
    	   /      	  10   6
    	 /   /     	11 9 7  5
题目地址
https://www.nowcoder.com/practice/564f4c26aa584921bc75623e48ca3011?tpId=13&tqId=11171&rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
思路

思路1:递归,判断根节点是否为空,为空时,无需交换,不为空时,交换其左右节点。对左右子树进行递归。

技术分享图片

# -*- coding:utf-8 -*-
class TreeNode:
    def __init__(self,x):
        self.val = x
        self.left = None
        self.right = None

node1 = TreeNode(8)
node2 = TreeNode(6)
node3 = TreeNode(10)
node4 = TreeNode(5)
node5 = TreeNode(7)
node6 = TreeNode(9)
node7 = TreeNode(11)
node1.left = node2
node1.right = node3
node2.left = node4
node2.right = node5
node3.left = node6
node3.right = node7

class Solution:
    # 返回镜像树的根节点
    def Mirror(self, root):
        # 递归
        if not root:
            return
        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


if __name__ == __main__:
    result = Solution().Mirror(node1)
    print(result)

以上是关于剑指Offer 18. 二叉树的镜像 (二叉树)的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer 18. 面试思路二叉树的镜像

剑指offer(18)二叉树的镜像

剑指offer18:操作给定的二叉树,将其变换为源二叉树的镜像。

剑指offer(三十四)之二叉树的镜像

[剑指Offer] 18.二叉树的镜像

剑指offer---18---(递归)(先序遍历)二叉树的镜像