python代码实现二叉树的镜像树
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代码实现二叉树的镜像树相关推荐
- python代码实现二叉树中最低的公共祖先
python代码实现二叉树中最低的公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先. 最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结 ...
- python代码实现二叉树的序列化和反序列化
python代码实现二叉树的序列化和反序列化 二叉树的序列化 二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字 符串,从而使得内存中建立起来的二叉树可以持久保存. 二叉树的反序 ...
- python代码打印二叉树某一特定层的节点
python代码打印二叉树某一特定层的节点 #Python实现打印二叉树某一层的所有节点 # 定义二叉树节点类 class Node(object):def __init__(self,data=0, ...
- python代码实现二叉树的分层打印
python代码实现二叉树的分层打印 #python代码实现二叉树的分层打印 class Node():def __init__(self, val=None):self.val = valself. ...
- 数据结构之平衡树:红黑树的介绍与Python代码实现——17
红黑树的介绍与Python代码实现 红黑树的介绍 红黑树(Red-Black Tree)是一种平衡二叉查找树,它是一种以比较简单的方式实现的2-3查找树 红黑树基于2-3查找树的表现 红链接:将两个2 ...
- python实现mysql二叉树_python环境下使用mysql数据及数据结构和二叉树算法(图)...
python环境下使用mysql数据及数据结构和二叉树算法(图): 1 python环境下使用mysql 2使用的是 pymysql库 3 开始-->创建connection-->获取cu ...
- 终于从树堆里爬出来了——堆排序(基于二叉树)基本思想、步骤、复杂度及python代码,欢迎交流
欢迎关注,敬请点赞! 树堆逃生记 一.动图演示 二.思路分析 1. 相关概念 2. 基本思想 3. 步骤 [步骤一] 构造初始堆 [步骤二] 将堆顶元素与末尾元素进行交换,使末尾元素最大. [步骤三] ...
- python代码判断两棵二叉树是否相同
python代码判断两棵二叉树是否相同 给定两个二叉树,编写一个函数来校验它们是否相同.如果两个树在结构上相同,并且结点具有相同的值,则认为它们是相同的. 判断两个二叉树是否是相同的,相同的依据是 二 ...
- 《剑指offer》-- 树的子结构、二叉树的镜像、二叉树的深度、平衡二叉树
一. 树的子结构: 1.题目: 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构. 2.解题思路: 这个题比较简单,利用递归的方式就可以判断B是不是A树的子结构 ...
最新文章
- 碉堡了!3款html5 svg 动画神作
- Oracle Database 10g安装后的基本环境与服务
- Xshell5 提示要继续使用此程序,您必须应用最新的更新或使用新版本
- Windows内核函数
- ruhr启动mysql数据库_Mysql表类型(存储引擎)的选择
- 如何深度理解RNN?——看图就好!
- 计算机辅助园林设计常用软件,计算机辅助园林设计应用探讨.doc
- 我的docker随笔10:docker客户端使用其它主机的docker服务器
- 生活中的数学(为生活建模)(二)
- 「首席看业务架构」商业模式画布
- win10无线网卡启动服务器,win10系统无线网卡被禁用怎么办?win10开启无线网卡的方法...
- vue中使用语音提示
- 程序员:走路也可以帮你拥有完美的翘臀!
- 关于That command depends on command in Target ... script phase Copy Pods Resources报错解决方案
- 《巴巴拉少校》读书笔记优秀范文2877字
- 串口数据交换,实现串口合二为一
- 【AI简报20210611期】Arm v9架构来啦、开源实战教你实现文字识别!
- 查找算法--01 顺序查找和二分查找
- 世界第一台计算机是多少位,世界上第一台计算机的字长是多少位?
- 记录一个数学知识:求向量在指定平面上的垂直向量
热门文章
- 实训3:配置网络负载平衡服务_Linux系统配置及服务管理第十四章网络管理实战2...
- java uml 为什么_Java开发为什么需要UML (转)
- qt webassembly 安装过程记录及注意事项
- 目标检测实战:4种YOLO目标检测的C++和Python两种版本实现
- 基于视觉和惯性传感器的移动机器人手遥操作系统
- NanoDet:轻量级(1.8MB)、超快速(移动端97fps)目标检测项目
- mongodb中简单的聚合查询
- OpenCV学习笔记1
- Sci. Adv. | 新算法识别治疗肺动脉高压的候选抗癌药物
- Nat. Mach. Intell. | 探索稀疏化学空间的化学语言模型新策略