国产探花免费观看_亚洲丰满少妇自慰呻吟_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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 合川市| 平泉县| 伊春市| 温泉县| 沁源县| 芒康县| 耒阳市| 泰来县| 蕲春县| 奉节县| 天峻县| 陕西省| 夹江县| 辉县市| 黄石市| 天台县| 金秀| 河源市| 柳河县| 垣曲县| 清苑县| 灵山县| 大兴区| 邓州市| 亚东县| 新宾| 常山县| 五河县| 盱眙县| 邳州市| 房产| 甘德县| 永川市| 成武县| 勃利县| 高陵县| 巴楚县| 南宫市| 辛集市| 德江县| 荥经县|