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.中序遍歷 規則是若樹為空,則空操作返回,否則從根節點開...