亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

Python實現重建二叉樹的三種方法詳解

2020-02-15 22:00:31
字體:
來源:轉載
供稿:網友

本文實例講述了Python實現重建二叉樹的三種方法。分享給大家供大家參考,具體如下:

學習算法中,探尋重建二叉樹的方法:

用input 前序遍歷順序輸入字符重建 前序遍歷順序字符串遞歸解析重建 前序遍歷順序字符串堆棧解析重建

如果懶得去看后面的內容,可以直接點擊此處本站下載完整實例代碼。

思路

學習算法中,python 算法方面的資料相對較少,二叉樹解析重建更少,只能摸著石頭過河。

通過不同方式遍歷二叉樹,可以得出不同節點的排序。那么,在已知節點排序的前提下,通過某種遍歷方式,可以將排序進行解析,從而構建二叉樹。

應用上來將,可以用來解析多項式、可以解析網頁、xml等。

本文采用前序遍歷方式的排列,對已知字符串進行解析,并生成二叉樹。新手,以解題為目的,暫未優化,未能體現 Python 簡潔、優美。請大牛不吝指正。

首先采用 input 輸入

節點類

class treeNode: def __init__(self, rootObj = None, leftChild = None, rightChild = None):  self.key = rootObj  self.leftChild = None  self.rightChild = None

input 方法重建二叉樹

 def createTreeByInput(self, root):  tmpKey = raw_input("please input a key, input '#' for Null")  if tmpKey == '#':   root = None  else:   root = treeNode(rootObj=tmpKey)   root.leftChild = self.createTreeByInput(root.leftChild)   root.rightChild = self.createTreeByInput(root.rightChild)  return root

以下兩種方法,使用預先編好的字符串,通過 list 方法轉換為 list 傳入進行解析

myTree 為實例化一個空樹

調用遞歸方法重建二叉樹

 treeElementList = '124#8##5##369###7##' myTree = myTree.createTreeByListWithRecursion(list(treeElementList)) printBTree(myTree, 0)

遞歸方法重建二叉樹

 def createTreeByListWithRecursion(self, preOrderList):  """  根據前序列表重建二叉樹  :param preOrder: 輸入前序列表  :return: 二叉樹  """  preOrder = preOrderList  if preOrder is None or len(preOrder) <= 0:   return None  currentItem = preOrder.pop(0) # 模擬C語言指針移動  if currentItem is '#':   root = None  else:   root = treeNode(currentItem)   root.leftChild = self.createTreeByListWithRecursion(preOrder)   root.rightChild = self.createTreeByListWithRecursion(preOrder)  return root

調用堆棧方法重建二叉樹

 treeElementList = '124#8##5##369###7##' myTree = myTree.createTreeByListWithStack(list(treeElementList)) printBTree(myTree, 0)

使用堆棧重建二叉樹

def createTreeByListWithStack(self, preOrderList): """ 根據前序列表重建二叉樹 :param preOrder: 輸入前序列表 :return: 二叉樹 """ preOrder = preOrderList pStack = SStack() # check if preOrder is None or len(preOrder) <= 0 or preOrder[0] is '#':  return None # get the root tmpItem = preOrder.pop(0) root = treeNode(tmpItem) # push root pStack.push(root) currentRoot = root while preOrder:  # get another item  tmpItem = preOrder.pop(0)  # has child  if tmpItem is not '#':   # does not has left child, insert one   if currentRoot.leftChild is None:    currentRoot = self.insertLeft(currentRoot, tmpItem)    pStack.push(currentRoot.leftChild)    currentRoot = currentRoot.leftChild   # otherwise insert right child   elif currentRoot.rightChild is None:    currentRoot = self.insertRight(currentRoot, tmpItem)    pStack.push(currentRoot.rightChild)    currentRoot = currentRoot.rightChild  # one child is null  else:   # if has no left child   if currentRoot.leftChild is None:    currentRoot.leftChild = None    # get another item fill right child    tmpItem = preOrder.pop(0)    # has right child    if tmpItem is not '#':     currentRoot = self.insertRight(currentRoot, tmpItem)     pStack.push(currentRoot.rightChild)     currentRoot = currentRoot.rightChild    # right child is null    else:     currentRoot.rightChild = None     # pop itself     parent = pStack.pop()     # pos parent     if not pStack.is_empty():      parent = pStack.pop()     # parent become current root     currentRoot = parent     # return from right child, so the parent has right child, go to parent's parent     if currentRoot.rightChild is not None:      if not pStack.is_empty():       parent = pStack.pop()       currentRoot = parent   # there is a leftchild ,fill right child with null and return to parent   else:    currentRoot.rightChild = None    # pop itself    parent = pStack.pop()    if not pStack.is_empty():     parent = pStack.pop()    currentRoot = parent return root            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av在线影院| 色妞欧美日韩在线| 国产丝袜精品第一页| 久久精品视频99| 欧美色欧美亚洲高清在线视频| 中文字幕在线看视频国产欧美在线看完整| 国产精品视频xxx| 欧美成人午夜免费视在线看片| 国产欧美日韩中文字幕在线| 亚洲国产精久久久久久久| 精品久久久久久久久久| 亚洲999一在线观看www| 亚洲国产成人久久综合| 国外成人在线视频| 亚洲人成自拍网站| 亚洲免费伊人电影在线观看av| 国产精品成人国产乱一区| 日韩欧美国产高清91| 成人午夜激情免费视频| 在线免费观看羞羞视频一区二区| 久久偷看各类女兵18女厕嘘嘘| 欧美国产精品人人做人人爱| 粗暴蹂躏中文一区二区三区| 91免费看视频.| 欧美性xxxxx极品| 91在线高清免费观看| 97色在线观看免费视频| www.日本久久久久com.| 国产精品爽爽爽爽爽爽在线观看| 国产999在线观看| 国模吧一区二区三区| 欧美日韩中国免费专区在线看| 超碰日本道色综合久久综合| 国产精品网红直播| 国产精品高潮呻吟视频| 国产成人一区二| 夜夜躁日日躁狠狠久久88av| 欧美激情图片区| 亚洲综合精品伊人久久| 中文字幕av一区| 国产主播喷水一区二区| 成人黄色午夜影院| 2025国产精品视频| 午夜精品久久17c| 欧美日韩一区二区免费在线观看| 国产亚洲精品久久久久久777| 国产精品扒开腿做爽爽爽视频| 欧美日本在线视频中文字字幕| 国产一区玩具在线观看| 国产成人av网| 亚洲欧美制服丝袜| 92裸体在线视频网站| 精品国产区一区二区三区在线观看| 福利二区91精品bt7086| 夜夜嗨av一区二区三区四区| 欧美黄色片在线观看| 午夜精品www| 日韩在线观看你懂的| 亚洲网址你懂得| 亚洲aⅴ日韩av电影在线观看| 久久国产精品网站| 久久久国产一区| 亚洲欧美日韩天堂一区二区| 国产精品成人va在线观看| 2020欧美日韩在线视频| 精品视频一区在线视频| 精品国产91久久久| www高清在线视频日韩欧美| 国产精品白嫩初高中害羞小美女| 亚洲欧洲自拍偷拍| 亚洲免费伊人电影在线观看av| 国产成人精品一区二区在线| 国产精品高清在线观看| 亚洲精品xxxx| 成人久久久久久久| 奇米4444一区二区三区| 亚洲偷熟乱区亚洲香蕉av| 亚洲天堂网站在线观看视频| 国产亚洲精品91在线| 秋霞午夜一区二区| 亚洲free性xxxx护士hd| 国产精品久久久久久av福利| 久久亚洲影音av资源网| 国产精品日韩专区| 97香蕉久久夜色精品国产| 亚洲精品ady| 亚洲成人av资源网| 国语对白做受69| 国产精品欧美风情| 国产丝袜一区二区| 4438全国成人免费| 欧美性高跟鞋xxxxhd| 成人激情视频小说免费下载| 国产精品黄色av| 亚洲精品电影久久久| 欧美—级a级欧美特级ar全黄| 亚洲欧洲在线播放| 在线丨暗呦小u女国产精品| 久久久久久亚洲精品不卡| 日韩欧美国产高清91| 色七七影院综合| 亚洲国产精品久久91精品| 久久久国产精品视频| 精品中文视频在线| 国产伊人精品在线| 中文字幕在线看视频国产欧美在线看完整| 97视频免费观看| 欧美成人四级hd版| 欧美性xxxx18| 成人淫片在线看| 欧美性感美女h网站在线观看免费| 欧洲永久精品大片ww免费漫画| 国内精品久久久久影院优| 欧洲成人性视频| 国产v综合ⅴ日韩v欧美大片| 亚洲乱码av中文一区二区| 欧美另类暴力丝袜| 色综合导航网站| 91高潮在线观看| 高跟丝袜欧美一区| 色综合天天狠天天透天天伊人| 亚洲欧美一区二区激情| 国产精品流白浆视频| 欧美成人精品在线| 成人精品久久av网站| 国产精品r级在线| 欧美理论片在线观看| 欧美激情精品久久久久久蜜臀| 九九精品视频在线| 国产999精品| 欧美中文字幕精品| 亚洲天堂男人天堂| 日本高清久久天堂| 亚洲欧美国产精品| 在线成人一区二区| 精品国产一区二区三区在线观看| 欧美日韩精品在线播放| 88国产精品欧美一区二区三区| 欧美性猛交xxxx免费看| 成人午夜在线影院| 久久天堂电影网| 亚洲理论在线a中文字幕| 日韩精品一二三四区| 欧美精品精品精品精品免费| 亚洲色图偷窥自拍| 久久精品电影网| 色婷婷亚洲mv天堂mv在影片| 久久躁狠狠躁夜夜爽| 精品动漫一区二区三区| 97在线看免费观看视频在线观看| 福利二区91精品bt7086| 亚洲精品久久久久久久久久久久久| 欧美激情欧美激情| 国产日韩视频在线观看| 国产成人精品免高潮费视频| 7m精品福利视频导航| 亚洲天堂网站在线观看视频| 国产精品久久久久久亚洲调教| 国产精品视频免费在线| 国产精品入口夜色视频大尺度| 精品久久久久人成| 国产精品一区二区女厕厕| 精品国产欧美一区二区三区成人| 91免费看国产|