最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python二叉樹(shù)的鏡像轉(zhuǎn)換實(shí)現(xiàn)方法示例

 更新時(shí)間:2019年03月06日 15:06:35   作者:goddaniel  
這篇文章主要介紹了Python二叉樹(shù)的鏡像轉(zhuǎn)換實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了二叉樹(shù)鏡像轉(zhuǎn)換的原理及Python相關(guān)算法實(shí)現(xiàn)技巧,需要的朋友可以參考下

本文實(shí)例講述了Python二叉樹(shù)的鏡像轉(zhuǎn)換實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:

問(wèn)題描述

操作給定的二叉樹(shù),將其變換為源二叉樹(shù)的鏡像。

思路描述

1. 代碼比文字更直觀

2. 文字描述:新建一個(gè)二叉樹(shù),利用遞歸法,將源二叉樹(shù)上的左節(jié)點(diǎn)賦值到新二叉樹(shù)的右節(jié)點(diǎn),將源二叉樹(shù)上的右節(jié)點(diǎn)賦值到新二叉樹(shù)的左節(jié)點(diǎn)。

Python代碼

# 方式1:生成新的鏡像二叉樹(shù)
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

但是提交代碼后,說(shuō)通過(guò)率為0… 原來(lái)要求將原有的二叉樹(shù)就地改成鏡像二叉樹(shù)…如此一來(lái),代碼就更簡(jiǎn)單了:因?yàn)榻粨Q根節(jié)點(diǎn)的左右子節(jié)點(diǎn)時(shí),以左右子節(jié)點(diǎn)為根節(jié)點(diǎn)的左子樹(shù)和右子樹(shù)也會(huì)交換位置。最終的Python代碼如下:

# 方式2:改變給定的二叉樹(shù)為鏡像二叉樹(shù)
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

包含測(cè)試代碼的最終代碼如下:

class Solution:
  # 給定一個(gè)二叉樹(shù),獲得其鏡像(軸對(duì)稱)的鏡像二叉樹(shù):
  # 方式1:生成新的鏡像二叉樹(shù)
  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:改變給定的二叉樹(shù)為鏡像二叉樹(shù)
  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
  # 給定二叉樹(shù)的前序遍歷和中序遍歷,獲得該二叉樹(shù)
  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)

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python加密解密算法與技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門(mén)與進(jìn)階經(jīng)典教程

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

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

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

    這篇文章主要介紹了python打包多類型文件的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 利用python實(shí)現(xiàn)你說(shuō)我猜游戲的完整實(shí)例

    利用python實(shí)現(xiàn)你說(shuō)我猜游戲的完整實(shí)例

    這篇文章主要給大家介紹了關(guān)于如何利用python實(shí)現(xiàn)你說(shuō)我猜游戲的相關(guān)資料,用到的都是一些簡(jiǎn)單的基礎(chǔ)的python語(yǔ)句,適合剛?cè)腴T(mén)的小白,可以嘗試跟著一起敲一下,感受一下編程中的樂(lè)趣,需要的朋友可以參考下
    2022-05-05
  • python3通過(guò)subprocess模塊調(diào)用腳本并和腳本交互的操作

    python3通過(guò)subprocess模塊調(diào)用腳本并和腳本交互的操作

    這篇文章主要介紹了python3通過(guò)subprocess模塊調(diào)用腳本并和腳本交互的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • numpy ndarray 按條件篩選數(shù)組,關(guān)聯(lián)篩選的例子

    numpy ndarray 按條件篩選數(shù)組,關(guān)聯(lián)篩選的例子

    今天小編就為大家分享一篇numpy ndarray 按條件篩選數(shù)組,關(guān)聯(lián)篩選的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • 用python實(shí)現(xiàn)刷點(diǎn)擊率的示例代碼

    用python實(shí)現(xiàn)刷點(diǎn)擊率的示例代碼

    今天小編就為大家分享一篇用python實(shí)現(xiàn)刷點(diǎn)擊率的示例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • 基于python實(shí)現(xiàn)自動(dòng)化辦公學(xué)習(xí)筆記(CSV、word、Excel、PPT)

    基于python實(shí)現(xiàn)自動(dòng)化辦公學(xué)習(xí)筆記(CSV、word、Excel、PPT)

    這篇文章主要介紹了基于python實(shí)現(xiàn)自動(dòng)化辦公學(xué)習(xí)筆記,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • ubuntu20.04運(yùn)用startup application開(kāi)機(jī)自啟動(dòng)python程序的腳本寫(xiě)法

    ubuntu20.04運(yùn)用startup application開(kāi)機(jī)自啟動(dòng)python程序的腳本寫(xiě)法

    這篇文章主要介紹了ubuntu20.04運(yùn)用startup application開(kāi)機(jī)自啟動(dòng)python程序的腳本寫(xiě)法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-10-10
  • 詳解python讀取和輸出到txt

    詳解python讀取和輸出到txt

    這篇文章主要介紹了python讀取和輸出到txt,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 如何用python復(fù)制粘貼excel指定單元格(可保留格式)

    如何用python復(fù)制粘貼excel指定單元格(可保留格式)

    這篇文章主要給大家介紹了關(guān)于如何用python復(fù)制粘貼excel指定單元格(可保留格式)的相關(guān)資料,利用python操作excel非常方便,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • python分段函數(shù)的實(shí)現(xiàn)示例

    python分段函數(shù)的實(shí)現(xiàn)示例

    分段函數(shù)是一種數(shù)學(xué)函數(shù),它將定義域分成若干個(gè)區(qū)間,每個(gè)區(qū)間對(duì)應(yīng)一個(gè)函數(shù),本文主要介紹了python分段函數(shù)的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12

最新評(píng)論

兴国县| 卢湾区| 永福县| 百色市| 司法| 盐边县| 乃东县| 卓资县| 四会市| 和静县| 金昌市| 孝昌县| 瑞丽市| 梅河口市| 田林县| 龙门县| 海盐县| 灵山县| 石城县| 黄陵县| 昔阳县| 望城县| 剑阁县| 涞水县| 潼南县| 建瓯市| 乐至县| 罗定市| 万全县| 钦州市| 高陵县| 朔州市| 抚州市| 颍上县| 连山| 景谷| 东台市| 巴马| 垫江县| 平谷区| 页游|