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

首頁 > 編程 > Python > 正文

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

2020-01-04 17:30:41
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Python利用前序和中序遍歷結果重建二叉樹的方法,實例分析了Python二叉樹的定義與遍歷操作技巧,需要的朋友可以參考下
 

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

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

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宝山区| 旬邑县| 辛集市| 钟祥市| 嘉义市| 马关县| 德清县| 宣恩县| 寻乌县| 象州县| 南阳市| 玛纳斯县| 汶上县| 依安县| 长顺县| 郓城县| 大足县| 泗水县| 安阳市| 黄石市| 文登市| 潜山县| 西贡区| 广平县| 丹寨县| 太和县| 图片| 五华县| 涿州市| 宁城县| 新竹县| 满洲里市| 南京市| 富阳市| 宁阳县| 蒙阴县| 东宁县| 洱源县| 鲜城| 武宁县| 黑龙江省|