Python利用前序和中序遍歷結(jié)果重建二叉樹的方法
本文實例講述了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īng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設(shè)計有所幫助。
相關(guān)文章
python和Appium移動端多設(shè)備自動化測試框架實現(xiàn)
這篇文章主要介紹了python和Appium移動端多設(shè)備自動化測試框架實現(xiàn),基于pytest和Appium框架,支持Android和iOS功能自動化的測試框架的相關(guān)內(nèi)容,需要的小伙伴可以參考一下2022-04-04
一篇文章帶你了解python標(biāo)準(zhǔn)庫--os模塊
在本篇內(nèi)容里小編給大家整理的是關(guān)于Python中os模塊及用法相關(guān)知識點,有興趣的朋友們可以學(xué)習(xí)下,希望能給你帶來幫助2021-08-08
Python:二維列表下標(biāo)互換方式(矩陣轉(zhuǎn)置)
今天小編就為大家分享一篇Python:二維列表下標(biāo)互換方式(矩陣轉(zhuǎn)置),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
Python讀取大量Excel文件并跨文件批量計算平均值的方法
這篇文章主要介紹了Python讀取大量Excel文件并跨文件批量計算平均值,介紹基于Python語言,實現(xiàn)對多個不同Excel文件進行數(shù)據(jù)讀取與平均值計算的方法,需要的朋友可以參考下2023-02-02
使用Python在PowerPoint演示文稿之間復(fù)制樣式
在專業(yè)演示文稿設(shè)計與制作領(lǐng)域,多場演示間保持一致性至關(guān)重要,在PowerPoint演示文稿之間復(fù)制幻燈片母版成為了一項關(guān)鍵技巧,本文中,我們將探討如何使用Python在不同的PowerPoint演示文稿之間復(fù)制幻燈片母版,提升演示文稿創(chuàng)作流程的效率與美觀度,需要的朋友可以參考下2024-05-05

