資料結構 樹 二叉樹的遍歷

2021-10-12 13:35:31 字數 2112 閱讀 5365

1.度

節點的度:某個節點的子節點個數

樹的度:節點最大的度數

2.二叉樹:最多有兩顆子樹:左子樹、右子樹

滿二叉樹:除最後一層沒有子節點外。其餘每一層的所有節點都有兩個子節點

完全二叉樹:在深度為d的二叉樹中,除了第d層,其他各層節點數均為2

滿二叉樹和完全二叉樹區別:完全二叉樹可允許在中間層包含葉子節點,滿二叉樹只允許最後一層為葉子節點

3.二叉樹的遍歷

主要區別:訪問根節點的順序

前序遍歷:訪問根節點-前序遍歷左子樹-前序遍歷右子樹:a-b-d-e-c

#定義乙個樹

class atree

(object)

: def __init__

(self,data=none,left=none,right=none)

: self.data=data

self.left=left

self.right=right

#前序遍歷

def preorder

(self)

:if self.data is not none:#訪問根節點

print

(self.data,end=

' ')

if self.left is not none:#遍歷左子樹

self.left.

preorder()

if self.right is not none:#遍歷右子樹

self.right.

preorder()

#搞一顆實際的樹

left_tree=

atree

('b'

)left_tree.left=

atree

('d'

)left_tree.right=

atree

('e'

)#定義了左子樹

right_tree=

atree

('c'

)right_tree.left=

atree

('f'

)right_tree.right=

atree

('g'

)#定義了右子樹

tree=

atree

('a'

)tree.left=left_tree

tree.right=right_tree#定義根節點

print

(tree.

preorder()

)>>a b d e c f g none

中序、後序遍歷就是將下面這幾段交換位置即可,其他均相同:

if self.data is not none:

print(self.data,end=』 ')

if self.left is not none:

self.left.preorder( )

if self.right is not none:

self.right.preorder( )

中序遍歷:遍歷根節點的左子樹-訪問根節點-遍歷右子樹: d-b-e-a-c

後序遍歷:從左到右先葉子後節點方式遍歷左右子樹-訪問根節點:d-e-b-c-a

層次遍歷:從根節點從上到下逐層遍歷,同一層中,從左到右訪問各節點:a-b-c-d-e

mysql 遍歷二叉樹 資料結構 二叉樹遍歷

這篇博文主要是研究二叉樹遍歷的遞迴與非遞迴演算法,有興趣的小夥伴可以了解下!二叉樹的遞迴遍歷 深度優先遍歷 先來張圖,看看各結點遍歷時的情況 二叉樹深度優先遍歷總結 分別為第一次,第二次,第三次進入某個結點 先序遍歷 先訪問根結點,然後先序遍歷左子樹,最後先序遍歷右子樹 根 左 右 中序遍歷 先中序...

資料結構 遍歷二叉樹

資料結構實驗之二叉樹二 遍歷二叉樹 time limit 1000ms memory limit 65536kb submit statistic problem description 已知二叉樹的乙個按先序遍歷輸入的字串行,如abc,de,g,f,其中,表示空結點 請建立二叉樹並按中序和後序的方...

資料結構 遍歷二叉樹

二叉樹的遍歷原理 二叉樹的遍歷是指從根節點出發,按照某種次序以此訪問二叉樹所有節點,使得每個節點被訪問一次且僅被訪問一次 二叉樹遍歷方法 1.前序遍歷 規則是若二叉樹為空,則空操作返回,否則先訪問根節點,然後前序遍歷左子樹,再前序遍歷右子樹 2.中序遍歷 規則是若樹為空,則空操作返回,否則從根節點開...