ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

《剑指offer》面试题15:二叉树的镜像(Python)

2020-08-27 08:35:04  阅读:149  来源: 互联网

标签:None right 15 self 面试题 二叉树 root left


 

题目描述

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

输入描述:

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

题目解析:

这个题目有两个解法,都运用了递归的思想,在二叉树当中使用递归一般都要对树的结构操作两次。

解法一:对源二叉树进行修改

# -*- 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==None:
            return None
        root.left,root.right=root.right,root.left
        
        
        self.Mirror(root.left)
        self.Mirror(root.right)
        #关键是我不写返回root这个程序也能运行
        return root

这个题目的意思是首先交换root下面的两个节点,然后交换root下下层的两个节点,最后返回新的root的树的根节点。

解法二:构造新的二叉树,但是这个方法可以我们自行学习而不用在这个题目上,因为这个题目让我们返回的是原来的二叉树而非新的二叉树,不然测试用例的通过情况为0,代码如下:

# -*- 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 == None:
            return None
        newTree = TreeNode(root.val)
      #首先构造新的节点,然后将新的节点下面的两个子树分别进行替换,更改方向 newTree.right = self.Mirror(root.left) newTree.left = self.Mirror(root.right) return newTree

 

标签:None,right,15,self,面试题,二叉树,root,left
来源: https://www.cnblogs.com/geeksongs/p/13569320.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有