Python 二叉樹的建立與三種遍歷方式

2021-08-17 23:03:58 字數 1681 閱讀 2513

建立和遍歷均使用遞迴的方式進行,**非常簡潔。

建立:自上而下。每個節點處,都先遞迴建立左子樹,直至左子樹為空,再建立右子樹。

前序遍歷:每個節點處,先訪問根節點,再訪問左子樹,最後訪問右子樹。

中序遍歷:每個節點處,先訪問左子樹,再訪問根節點,最後訪問右子樹。

後序遍歷:每個節點處,先訪問左子樹,再訪問右子樹,最後訪問根節點。

(**中的遞迴順序與遍歷順序完全相同,清晰易懂)

class node:

def __init__(self,data):

self.data = data

self.left = none

self.right = none

# 建立二叉樹

def create(root):

a = input("請輸入元素,『#』表示該位置為空")

if a is '#':

root=none

else:

root=node(a)

root.left=create(root.left)

root.right=create(root.right)

return root

# 前序遍歷

def presearch(root):

if not root:

return none

else:

print(root.data)

presearch(root.left)

presearch(root.right)

# 中序遍歷

def midsearch(root):

if not root:

return none

else:

midsearch(root.left)

print(root.data)

midsearch(root.right)

# 後序遍歷

def postsearch(root):

if not root:

return none

else:

postsearch(root.left)

postsearch(root.right)

print(root.data)

root = none

root = create(root)

print("前序遍歷結果:")

presearch(root)

print("中序遍歷結果:")

midsearch(root)

print("後序遍歷結果:")

postsearch(root)

以下圖為例,依次輸入元素:

我們建立的二叉樹如下圖所示:

三種遍歷的執行結果如下:

更為複雜的樹結構,請大家自行驗證哈。

二叉樹的建立與三種遍歷方式

作為鹹魚,這個學期學習了一種極為重要的資料結構 二叉樹 和之前的線性資料結構比起來,二叉樹是非線性的,擁有多樣的建立和遍歷方式 剛剛上手的時候,總會覺得有點暈頭轉向 加之遞迴函式又有些生疏,剛開始學習的時候總是會出現一些莫名其妙的報錯 那麼先從基礎的開始 二叉樹的建立與三種遍歷方式 首先是定義二叉樹...

二叉樹的建立和三種遍歷

二叉樹的三種遍歷是以根的遍歷順序來講的 先序遍歷 根左右 中序遍歷 左根右 後序遍歷 左右根 二叉樹是從根節點的那一層開始,從左至右讀每一層的結點讀入的。表示空結點,表示輸入結束 include include include include include include include incl...

二叉樹的三種遍歷

重新又看了一遍二叉樹 binary tree 發現很多東西自己還沒有弄明白,原來三種遍歷方式還不是自己想象中的那樣 前序遍歷 preorder 是先輸出自己,然後左,最後右。中序遍歷 inorder 是先左,再輸出自己,最後右。後序遍歷 postorder 是先左,再右,最後輸出自己。所謂的xx遍歷...