熱線電話:13121318867

登錄
首頁精彩閱讀Python利用前序和中序遍歷結果重建二叉樹的方法
Python利用前序和中序遍歷結果重建二叉樹的方法
2017-11-08
收藏

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

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

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

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

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

Python代碼:

# coding: utf-8
'''
題目:輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。
假設輸入的前序遍歷和中序遍歷的結果中都不含重復的數字。
'''
class Node:
  def __init__(self, data, left, right):
    self.data = data
    self.left = left
    self.right = right
def 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


數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢