python代码实现二叉树的镜像树

请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如下图所示,左图是原二叉树,而右图则是该二叉树的镜像。

可以总结出这两棵树的根节点相同,但它们的左、右两个子节点交换了位置。所以我们可以得出求一棵树的镜像的过程:先前序遍历这棵树的每个节点,如果遍历到的节点有子节点,就交换它的两个子节点。当交换完所有非叶节点的左、右子节点之后,就得到了树的镜像。

Step1.先序遍历原二叉树的每个节点,如果遍历到的结点有子结点,就交换它的两个子结点。

Step2.递归遍历每个节点的子节点,同样,如果遍历到的子节点有子节点,就交换它的两个子节点。

当交换完所有非叶子结点的左右子结点之后,就得到了树的镜像

# 需要判断输入的结点为空或者输入的结点没有子树的情况。

'''
操作给定的二叉树,将其变换为源二叉树的镜像。
'''# -*- coding:utf-8 -*-
class TreeNode:def __init__(self, x):self.val = xself.left = Noneself.right = None
class Solution:# 递归实现def Mirror(self, root):if root &

python代码实现二叉树的镜像树相关推荐

  1. python代码实现二叉树中最低的公共祖先

    python代码实现二叉树中最低的公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先. 最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结 ...

  2. python代码实现二叉树的序列化和反序列化

    python代码实现二叉树的序列化和反序列化 二叉树的序列化 二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字 符串,从而使得内存中建立起来的二叉树可以持久保存. 二叉树的反序 ...

  3. python代码打印二叉树某一特定层的节点

    python代码打印二叉树某一特定层的节点 #Python实现打印二叉树某一层的所有节点 # 定义二叉树节点类 class Node(object):def __init__(self,data=0, ...

  4. python代码实现二叉树的分层打印

    python代码实现二叉树的分层打印 #python代码实现二叉树的分层打印 class Node():def __init__(self, val=None):self.val = valself. ...

  5. 数据结构之平衡树:红黑树的介绍与Python代码实现——17

    红黑树的介绍与Python代码实现 红黑树的介绍 红黑树(Red-Black Tree)是一种平衡二叉查找树,它是一种以比较简单的方式实现的2-3查找树 红黑树基于2-3查找树的表现 红链接:将两个2 ...

  6. python实现mysql二叉树_python环境下使用mysql数据及数据结构和二叉树算法(图)...

    python环境下使用mysql数据及数据结构和二叉树算法(图): 1 python环境下使用mysql 2使用的是 pymysql库 3 开始-->创建connection-->获取cu ...

  7. 终于从树堆里爬出来了——堆排序(基于二叉树)基本思想、步骤、复杂度及python代码,欢迎交流

    欢迎关注,敬请点赞! 树堆逃生记 一.动图演示 二.思路分析 1. 相关概念 2. 基本思想 3. 步骤 [步骤一] 构造初始堆 [步骤二] 将堆顶元素与末尾元素进行交换,使末尾元素最大. [步骤三] ...

  8. python代码判断两棵二叉树是否相同

    python代码判断两棵二叉树是否相同 给定两个二叉树,编写一个函数来校验它们是否相同.如果两个树在结构上相同,并且结点具有相同的值,则认为它们是相同的. 判断两个二叉树是否是相同的,相同的依据是 二 ...

  9. 《剑指offer》-- 树的子结构、二叉树的镜像、二叉树的深度、平衡二叉树

    一. 树的子结构: 1.题目: 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构. 2.解题思路: 这个题比较简单,利用递归的方式就可以判断B是不是A树的子结构 ...

最新文章

  1. 碉堡了!3款html5 svg 动画神作
  2. Oracle Database 10g安装后的基本环境与服务
  3. Xshell5 提示要继续使用此程序,您必须应用最新的更新或使用新版本
  4. Windows内核函数
  5. ruhr启动mysql数据库_Mysql表类型(存储引擎)的选择
  6. 如何深度理解RNN?——看图就好!
  7. 计算机辅助园林设计常用软件,计算机辅助园林设计应用探讨.doc
  8. 我的docker随笔10:docker客户端使用其它主机的docker服务器
  9. 生活中的数学(为生活建模)(二)
  10. 「首席看业务架构」商业模式画布
  11. win10无线网卡启动服务器,win10系统无线网卡被禁用怎么办?win10开启无线网卡的方法...
  12. vue中使用语音提示
  13. 程序员:走路也可以帮你拥有完美的翘臀!
  14. 关于That command depends on command in Target ... script phase Copy Pods Resources报错解决方案
  15. 《巴巴拉少校》读书笔记优秀范文2877字
  16. 串口数据交换,实现串口合二为一
  17. 【AI简报20210611期】Arm v9架构来啦、开源实战教你实现文字识别!
  18. 查找算法--01 顺序查找和二分查找
  19. 世界第一台计算机是多少位,世界上第一台计算机的字长是多少位?
  20. 记录一个数学知识:求向量在指定平面上的垂直向量

热门文章

  1. 实训3:配置网络负载平衡服务_Linux系统配置及服务管理第十四章网络管理实战2...
  2. java uml 为什么_Java开发为什么需要UML (转)
  3. qt webassembly 安装过程记录及注意事项
  4. 目标检测实战:4种YOLO目标检测的C++和Python两种版本实现
  5. 基于视觉和惯性传感器的移动机器人手遥操作系统
  6. NanoDet:轻量级(1.8MB)、超快速(移动端97fps)目标检测项目
  7. mongodb中简单的聚合查询
  8. OpenCV学习笔记1
  9. Sci. Adv. | 新算法识别治疗肺动脉高压的候选抗癌药物
  10. Nat. Mach. Intell. | 探索稀疏化学空间的化学语言模型新策略