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

首頁 > 編程 > Python > 正文

Python利用前序和中序遍歷結果重建二叉樹的方法

2019-11-25 16:49:30
字體:
來源:轉載
供稿:網友

本文實例講述了Python利用前序和中序遍歷結果重建二叉樹的方法。分享給大家供大家參考,具體如下:

題目:輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重復的數字。

這道題比較容易,前序遍歷的結果中,第一個結點一定是根結點,然后在中序遍歷的結果中查找這個根結點,根結點左邊的就是左子樹,根結點右邊的就是右子樹,遞歸構造出左、右子樹即可。示意圖如圖所示:

利用前序和中序遍歷的結果重建二叉樹

Python代碼:

# coding: utf-8'''題目:輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重復的數字。'''class Node:  def __init__(self, data, left, right):    self.data = data    self.left = left    self.right = rightdef construct_tree(pre_order, mid_order):  # 忽略參數合法性判斷  if len(pre_order) == 0 :    return None  # 前序遍歷的第一個結點一定是根結點  root_data = pre_order[0]  for i in range(0, len(mid_order)):    if mid_order[i] == root_data:      break  # 遞歸構造左子樹和右子樹  left = construct_tree(pre_order[1 : 1 + i], mid_order[:i])  right = construct_tree(pre_order[1 + i:], mid_order[i+1:])  return Node(root_data, left, right)if __name__ == '__main__':  pre_order = [1, 2, 4, 7, 3, 5, 6, 8]  mid_order = [4, 7, 2, 1, 5, 3, 8, 6]  root = construct_tree(pre_order, mid_order)  print root.data  print root.left.data  print root.right.data  print root.left.left.data  print root.left.left.right.data  print root.right.right.left  print root.right.left.data

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數據結構與算法教程》、《Python Socket編程技巧總結》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對大家Python程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 奎屯市| 江西省| 邵阳市| 萨迦县| 崇州市| 霍城县| 汕头市| 车致| 手机| 谷城县| 前郭尔| 鹿邑县| 博野县| 南靖县| 察雅县| 梅河口市| 青浦区| 紫金县| 重庆市| 苏尼特右旗| 长海县| 竹山县| 确山县| 扎鲁特旗| 葫芦岛市| 双辽市| 新邵县| 清徐县| 当雄县| 永兴县| 锡林浩特市| 望奎县| 麻江县| 建昌县| 临武县| 海城市| 台东市| 天长市| 即墨市| 延寿县| 邢台市|