欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2016年04月27日 10:00:02   作者:阿涵-_-  
這篇文章主要介紹了Python利用前序和中序遍歷結(jié)果重建二叉樹的方法,實例分析了Python二叉樹的定義與遍歷操作技巧,需要的朋友可以參考下

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

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

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

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

Python代碼:

# coding: utf-8
'''
題目:輸入某二叉樹的前序遍歷和中序遍歷的結(jié)果,請重建出該二叉樹。
假設(shè)輸入的前序遍歷和中序遍歷的結(jié)果中都不含重復(fù)的數(shù)字。
'''
class Node:
  def __init__(self, data, left, right):
    self.data = data
    self.left = left
    self.right = right
def construct_tree(pre_order, mid_order):
  # 忽略參數(shù)合法性判斷
  if len(pre_order) == 0 :
    return None
  # 前序遍歷的第一個結(jié)點一定是根結(jié)點
  root_data = pre_order[0]
  for i in range(0, len(mid_order)):
    if mid_order[i] == root_data:
      break
  # 遞歸構(gòu)造左子樹和右子樹
  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

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

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

相關(guān)文章

  • 詳解Python中的多線程編程

    詳解Python中的多線程編程

    這篇文章主要介紹了詳解Python中的多線程編程,Python中的多線程一直是Python學(xué)習(xí)中的重點和難點,要反復(fù)鞏固!需要的朋友可以參考下
    2015-04-04
  • python opencv 畫外接矩形框的完整代碼

    python opencv 畫外接矩形框的完整代碼

    這篇文章主要介紹了python-opencv-畫外接矩形框的實例代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • 對python以16進(jìn)制打印字節(jié)數(shù)組的方法詳解

    對python以16進(jìn)制打印字節(jié)數(shù)組的方法詳解

    今天小編就為大家分享一篇對python以16進(jìn)制打印字節(jié)數(shù)組的方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python實現(xiàn)配置文件備份的方法

    Python實現(xiàn)配置文件備份的方法

    這篇文章主要介紹了Python實現(xiàn)配置文件備份的方法,實例分析了基于Linux平臺下Python文件壓縮備份的相關(guān)技巧,具有一定參考借鑒價值
    2015-07-07
  • 4款Python 類型檢查工具,你選擇哪個呢?

    4款Python 類型檢查工具,你選擇哪個呢?

    這篇文章主要介紹了4款Python 類型檢查工具的相關(guān)資料,幫助是及早檢查,提前發(fā)現(xiàn)類型的錯誤,增強代碼的一致性與可維護(hù)性。(還有防止脫發(fā),喵),感興趣的朋友可以了解下
    2020-10-10
  • python編寫Logistic邏輯回歸

    python編寫Logistic邏輯回歸

    這篇文章主要介紹了python編寫Logistic邏輯回歸的相關(guān)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • python?中的?super詳解

    python?中的?super詳解

    這篇文章主要介紹了python?中的?super,提到 super,最直接的想法就是它代表了父類,替父類執(zhí)行某些方法,但是理解也僅止步于此,下面對 super 做進(jìn)一步理解,需要的朋友可以參考下
    2022-08-08
  • python實現(xiàn)自動解數(shù)獨小程序

    python實現(xiàn)自動解數(shù)獨小程序

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)自動解數(shù)獨小程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 在Python中操作字符串之startswith()方法的使用

    在Python中操作字符串之startswith()方法的使用

    這篇文章主要介紹了在Python中操作字符串之startswith()方法的使用,是Python入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-05-05
  • pycharm 設(shè)置項目的根目錄教程

    pycharm 設(shè)置項目的根目錄教程

    今天小編就為大家分享一篇pycharm 設(shè)置項目的根目錄教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02

最新評論