国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

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

2020-01-04 13:35:27
字體:
供稿:網(wǎng)友

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

問題描述

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

Python,二叉樹,鏡像轉(zhuǎn)換

思路描述

1. 代碼比文字更直觀

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

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… 原來要求將原有的二叉樹就地改成鏡像二叉樹…如此一來,代碼就更簡(jiǎn)單了:因?yàn)榻粨Q根節(jié)點(diǎn)的左右子節(jié)點(diǎn)時(shí),以左右子節(jié)點(diǎn)為根節(jié)點(diǎn)的左子樹和右子樹也會(huì)交換位置。最終的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

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

class Solution:  # 給定一個(gè)二叉樹,獲得其鏡像(軸對(duì)稱)的鏡像二叉樹:  # 方式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 rootclass treeNode:  def __init__(self, x):    self.left = None    self.right = None    self.val = xif __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)

 

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


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到python教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 龙南县| 桃园市| 靖宇县| 获嘉县| 札达县| 南靖县| 伊吾县| 襄城县| 垫江县| 洛南县| 柯坪县| 承德县| 遵化市| 江孜县| 清原| 永年县| 轮台县| 贵德县| 石狮市| 湄潭县| 大埔区| 彰化市| 龙海市| 宾阳县| 西乌珠穆沁旗| 霸州市| 永和县| 鹤壁市| 达孜县| 九江县| 桂阳县| 新津县| 曲靖市| 改则县| 从江县| 平乐县| 华池县| 周宁县| 永昌县| 孟州市| 富源县|