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

 更新时间:2019年03月06日 15:06:35   作者:goddaniel  
这篇文章主要介绍了Python二叉树的镜像转换实现方法,结合实例形式分析了二叉树镜像转换的原理及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加密解密算法与技巧总结》、《Python编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

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

您可能感兴趣的文章:

相关文章

  • python打包多类型文件的操作方法

    python打包多类型文件的操作方法

    这篇文章主要介绍了python打包多类型文件的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • 利用python实现你说我猜游戏的完整实例

    利用python实现你说我猜游戏的完整实例

    这篇文章主要给大家介绍了关于如何利用python实现你说我猜游戏的相关资料,用到的都是一些简单的基础的python语句,适合刚入门的小白,可以尝试跟着一起敲一下,感受一下编程中的乐趣,需要的朋友可以参考下
    2022-05-05
  • python3通过subprocess模块调用脚本并和脚本交互的操作

    python3通过subprocess模块调用脚本并和脚本交互的操作

    这篇文章主要介绍了python3通过subprocess模块调用脚本并和脚本交互的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • numpy ndarray 按条件筛选数组,关联筛选的例子

    numpy ndarray 按条件筛选数组,关联筛选的例子

    今天小编就为大家分享一篇numpy ndarray 按条件筛选数组,关联筛选的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • 用python实现刷点击率的示例代码

    用python实现刷点击率的示例代码

    今天小编就为大家分享一篇用python实现刷点击率的示例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • 基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)

    基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)

    这篇文章主要介绍了基于python实现自动化办公学习笔记,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • ubuntu20.04运用startup application开机自启动python程序的脚本写法

    ubuntu20.04运用startup application开机自启动python程序的脚本写法

    这篇文章主要介绍了ubuntu20.04运用startup application开机自启动python程序的脚本写法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-10-10
  • 详解python读取和输出到txt

    详解python读取和输出到txt

    这篇文章主要介绍了python读取和输出到txt,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • 如何用python复制粘贴excel指定单元格(可保留格式)

    如何用python复制粘贴excel指定单元格(可保留格式)

    这篇文章主要给大家介绍了关于如何用python复制粘贴excel指定单元格(可保留格式)的相关资料,利用python操作excel非常方便,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • python分段函数的实现示例

    python分段函数的实现示例

    分段函数是一种数学函数,它将定义域分成若干个区间,每个区间对应一个函数,本文主要介绍了python分段函数的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12

最新评论