Python二叉树的镜像转换实现方法示例


Posted in Python onMarch 06, 2019

本文实例讲述了Python二叉树的镜像转换实现方法。分享给大家供大家参考,具体如下:

问题描述

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

Python二叉树的镜像转换实现方法示例

思路描述

1. 代码比文字更直观

2. 文字描述:新建一个二叉树,利用递归法,将源二叉树上的左节点赋值到新二叉树的右节点,将源二叉树上的右节点赋值到新二叉树的左节点。

Python代码

# 方式1:生成新的镜像二叉树
def getMirrorBST(self, root):
  if root == None:
    return
  newTree = treeNode(root.val)
  newTree.right = self.getMirrorBST(root.left)
  newTree.left = self.getMirrorBST(root.right)
  return newTree

但是提交代码后,说通过率为0… 原来要求将原有的二叉树就地改成镜像二叉树…如此一来,代码就更简单了:因为交换根节点的左右子节点时,以左右子节点为根节点的左子树和右子树也会交换位置。最终的Python代码如下:

# 方式2:改变给定的二叉树为镜像二叉树
def turnToMirror(self, root):
  if root == None:
    return
  root.right, root.left = root.left, root.right
  self.turnToMirror(root.left)
  self.turnToMirror(root.right)
  return root

包含测试代码的最终代码如下:

class Solution:
  # 给定一个二叉树,获得其镜像(轴对称)的镜像二叉树:
  # 方式1:生成新的镜像二叉树
  def getMirrorBST(self, root):
    if root == None:
      return
    newTree = treeNode(root.val)
    newTree.right = self.getMirrorBST(root.left)
    newTree.left = self.getMirrorBST(root.right)
    return newTree
  # 方式2:改变给定的二叉树为镜像二叉树
  def turnToMirror(self, root):
    if root == None:
      return
    root.right, root.left = root.left, root.right
    self.turnToMirror(root.left)
    self.turnToMirror(root.right)
    return root
  # 给定二叉树的前序遍历和中序遍历,获得该二叉树
  def getBSTwithPreTin(self, pre, tin):
    if len(pre)==0 | len(tin)==0:
      return None
    root = treeNode(pre[0])
    for order,item in enumerate(tin):
      if root .val == item:
        root.left = self.getBSTwithPreTin(pre[1:order+1], tin[:order])
        root.right = self.getBSTwithPreTin(pre[order+1:], tin[order+1:])
        return root
class treeNode:
  def __init__(self, x):
    self.left = None
    self.right = None
    self.val = x
if __name__ == '__main__':
  flag = "turnToMirror"
  solution = Solution()
  preorder_seq = [1, 2, 4, 7, 3, 5, 6, 8]
  middleorder_seq = [4, 7, 2, 1, 5, 3, 8, 6]
  treeRoot1 = solution.getBSTwithPreTin(preorder_seq, middleorder_seq)
  if flag == "mirrorBST":
    newRoot = solution.getMirrorBST(treeRoot1)
    print(newRoot)
  if flag == "turnToMirror":
    solution.turnToMirror(treeRoot1)
    print(treeRoot1)

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python牛刀小试密码爆破
Feb 03 Python
Python中的index()方法使用教程
May 18 Python
Python中new方法的详解
Jan 15 Python
python操作kafka实践的示例代码
Jun 19 Python
Python多叉树的构造及取出节点数据(treelib)的方法
Aug 09 Python
在Python中字符串、列表、元组、字典之间的相互转换
Nov 15 Python
pytorch 批次遍历数据集打印数据的例子
Dec 30 Python
利用Tensorflow构建和训练自己的CNN来做简单的验证码识别方式
Jan 20 Python
对python中各个response的使用说明
Mar 28 Python
python是怎么被发明的
Jun 15 Python
python开发入门——set的使用
Sep 03 Python
Python超详细分步解析随机漫步
Mar 17 Python
Python实现二叉树的常见遍历操作总结【7种方法】
Mar 06 #Python
Python中一般处理中文的几种方法
Mar 06 #Python
Python学习笔记之视频人脸检测识别实例教程
Mar 06 #Python
Python学习笔记之图片人脸检测识别实例教程
Mar 06 #Python
详解django2中关于时间处理策略
Mar 06 #Python
Django使用AJAX调用自己写的API接口的方法
Mar 06 #Python
Django+Xadmin构建项目的方法步骤
Mar 06 #Python
You might like
PHP使用in_array函数检查数组中是否存在某个值
2015/03/25 PHP
鼠标移入移出事件改变图片的分辨率的两种方法
2013/12/17 Javascript
javascript函数定义的几种区别小结
2014/01/06 Javascript
javascript+html5实现绘制圆环的方法
2015/07/28 Javascript
JQuery悬停控制图片轮播——代码简单
2015/08/05 Javascript
快速学习jQuery插件 Cookie插件使用方法
2015/12/01 Javascript
详解Webwork中Action 调用的方法
2016/02/02 Javascript
简单的js表格操作
2016/09/24 Javascript
详解用原生JavaScript实现jQuery的某些简单功能
2016/12/19 Javascript
JS中with的替代方法与String中的正则方法详解
2016/12/23 Javascript
详解Javascript百度地图接口开发文档中的类和方法
2017/02/07 Javascript
layui 表格的属性的显示转换方法
2018/08/14 Javascript
js核心基础之闭包的应用实例分析
2019/05/11 Javascript
Vue+element 解决浏览器自动填充记住的账号密码问题
2019/06/11 Javascript
vue实现直播间点赞飘心效果的示例代码
2019/09/20 Javascript
JS常用正则表达式超全集(密码强度校验,金额校验,IE版本,IPv4,IPv6校验)
2020/02/03 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
2021/01/28 Javascript
[01:06:07]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS CIS
2014/05/22 DOTA
[01:16:13]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第一场 2月22日
2021/03/11 DOTA
python subprocess 杀掉全部派生的子进程方法
2017/01/16 Python
Python3将数据保存为txt文件的方法
2019/09/12 Python
python numpy实现rolling滚动案例
2020/06/08 Python
python 如何将office文件转换为PDF
2020/09/22 Python
CSS3媒体查询(Media Queries)介绍
2013/09/12 HTML / CSS
受外贸欢迎的美国主机:BlueHost
2017/05/16 全球购物
GOLFINO英国官网:高尔夫服装
2020/04/11 全球购物
澳大利亚美容产品及化妆品在线:Activeskin
2020/06/03 全球购物
医学护理系毕业生求职信
2013/10/01 职场文书
出纳担保书范文
2014/04/02 职场文书
大学开学计划书
2014/04/30 职场文书
入党介绍人评语
2014/05/06 职场文书
信用卡工作证明模板
2014/09/14 职场文书
小学运动会开幕词
2015/01/28 职场文书
银行中层干部培训心得体会
2016/01/11 职场文书
怎样评估创业计划书是否有可行性?
2019/08/07 职场文书
python plt.plot bar 如何设置绘图尺寸大小
2021/06/01 Python