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采用getopt解析命令行输入参数实例
Sep 30 Python
Python读写Excel文件方法介绍
Nov 22 Python
Python的自动化部署模块Fabric的安装及使用指南
Jan 19 Python
关于python的bottle框架跨域请求报错问题的处理方法
Mar 19 Python
Python实现屏幕截图的两种方式
Feb 05 Python
python读写csv文件实例代码
Jul 05 Python
python内存动态分配过程详解
Jul 15 Python
python中matplotlib条件背景颜色的实现
Sep 02 Python
python深copy和浅copy区别对比解析
Dec 26 Python
使用pytorch和torchtext进行文本分类的实例
Jan 08 Python
Python实现括号匹配方法详解
Feb 10 Python
python3 自动打印出最新版本执行的mysql2redis实例
Apr 09 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删除数组中的特定元素的代码
2012/06/28 PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
2016/04/12 PHP
Laravel中validation验证 返回中文提示 全局设置的方法
2019/09/29 PHP
关于Laravel-admin的基础用法总结和自定义model详解
2019/10/08 PHP
TP5框架请求响应参数实例分析
2019/10/17 PHP
Javascript常考语句107条收集
2010/03/09 Javascript
JavaScript内核之基本概念
2011/10/21 Javascript
js选取多个或单个元素的实现代码(用class)
2012/08/22 Javascript
JS中不为人知的五种声明Number的方式简要概述
2013/02/22 Javascript
JavaScript 正则表达式中global模式的特性
2016/02/25 Javascript
在node中如何使用 ES6
2017/04/22 Javascript
Vue2.0 axios前后端登陆拦截器(实例讲解)
2017/10/27 Javascript
JS实现二维数组元素的排列组合运算简单示例
2019/01/28 Javascript
JavaScript惰性载入函数实例分析
2019/03/27 Javascript
openLayer4实现动态改变标注图标
2020/08/17 Javascript
基于Vue+Webpack拆分路由文件实现管理
2020/11/16 Javascript
[10:14]2018DOTA2国际邀请赛寻真——paiN Gaming不仅为自己而战
2018/08/14 DOTA
python中pandas.DataFrame对行与列求和及添加新行与列示例
2017/03/12 Python
python实现壁纸批量下载代码实例
2018/01/25 Python
numpy中实现ndarray数组返回符合特定条件的索引方法
2018/04/17 Python
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
2018/09/04 Python
Python简单实现词云图代码及步骤解析
2020/06/04 Python
美国在线面料商店:Online Fabric Store
2018/07/26 全球购物
莫斯科高科技在线商店:KremlinStore
2019/03/13 全球购物
客服部工作职责范本
2014/02/14 职场文书
《春晓》教学反思
2014/04/20 职场文书
企业党员一句话承诺
2014/05/30 职场文书
支部组织生活会方案
2014/06/10 职场文书
个人主要事迹材料
2014/08/26 职场文书
孝敬父母的活动方案
2014/08/28 职场文书
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
2015年体检中心工作总结
2015/05/27 职场文书
独生子女证明范本
2015/06/19 职场文书
2016党校学习心得体会
2016/01/07 职场文书
导游词之南迦巴瓦峰
2019/11/19 职场文书
【超详细】八大排序算法的各项比较以及各自特点
2021/03/31 Python