1.樹:樹是n(n>=0)個結點的有限集合。n=0的時候,爲空樹。
2.在任一個非空樹中:
1).有且僅有有一個稱爲根的結點。
2).其餘的結點可分爲m(m>=0)個互不相交的子集T1,T2,T3……Tm,其中每個子集本身又是一顆樹,並稱其爲根結點的子樹。
3.一個結點的子樹的個數記爲該結點的度。
4.樹的度:樹中各結點的度的最大值。
5.葉子結點:也稱爲終端結點,指度爲零的結點。
6.內部結點:度不爲零的結點稱爲分支結點或非終端結點。除根結點之外,分支結點也稱爲內部節點。
7.結點的層次:根爲第一層,根的孩子爲第二層。
8.樹的高度:一棵樹的最大層數。也叫深度。
9.有序(無許)樹:若將書中的結點的各子樹堪稱是從左到右具有次序的,既不能交換,則稱爲有序樹,反之,爲無序樹。
10。森林:是m(m>=0)棵互不相交的樹的集合。
11.樹的遍歷:
- 前序遍歷 :A B E F I J C D G H
- 後序遍歷:E I J F B C G H D A
- 層次遍歷: A B C D E F G H I J
(樹是沒有中序遍歷;二叉樹有中序遍歷)
12.二叉樹:是n(n>=0)個結點的有限集合,它或者是空數(n=0),或者有一個根結點及兩顆互不相交的、分別稱爲左子樹和右子樹的二叉樹所組成。
13.二叉樹與樹的區別:
- 二叉樹的結點最大爲2,而樹不限制結點的度。
- 二叉樹的結點的子樹要區分左子樹和右子樹
14.二叉樹的性質:
- 二叉樹第i層上的結點數目最多爲2^i-1 (i>=1).
- 深度爲K的二叉樹至多有2^k-1個結點(k>=1)
- 在任意一棵二叉樹中,若終端結點數爲n0,度爲2的結點樹爲n2,則n0=n2+1 具有n個結點的完全二叉樹深度爲 (圖片公式意思是去下線正數)
- 對一棵有n個結點的完全二叉樹的結點按層次自左至右經行編號,則對任意一結點i有:
- 若i=1,則結點i是二叉樹的根,無雙親,
- 若i>1,則其雙親爲i/2(取下限正數)
- 若2i>n,則結點i無左孩子,否則其左孩子爲2i.
- 若2i+1>n,則結點i無右孩子,否則其右孩子爲2i.
二叉樹如下圖:
15.深度爲K的二叉樹有(2^k)-1個結點,則稱爲滿二叉樹
如下圖
16.深度爲K、有n個結點的二叉樹,當且僅當其每一個都與深度爲K的滿二叉樹編號從1至n的結點一一對應,稱之爲完全二叉樹。
如下圖。
17.二叉樹存儲:
- 順序存儲:完全二叉樹非常適用
- 鏈式存儲
18.二叉樹的遍歷:
- 前序遍歷 : 4 2 1 3 5 6
- 中序遍歷:1 2 3 4 5 6
- 後序遍歷:1 3 2 6 5 4
19.二叉樹排序樹:
又稱爲二叉樹找樹:或者是一棵空數,或者是具有下列性質的二叉樹:
- 若左子樹不爲空,則左子樹上所有的結點的值均小於它的根結點的值;
- 若右子樹不空,則右子樹上所有結點的值均大於或等於它的根結點的值。
- 左、右子樹也分別爲二叉排序樹。
如下圖:
20.平衡二叉樹:
又被稱爲AVL樹。具有一下性質:它是一棵空數或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹。
如下:
21.線索樹:
n個結點的二叉鏈表中含有n+1(2n-(n-1)=n+1)個空指針域。利用二叉鏈表中的空指針域,存放指向結點在某種遍歷次序下的前趨和後繼結點的指針(這種附加的指針稱爲‘線索’)
22.最優二叉樹
給定n個權值作爲n的葉子結點,構造一棵二叉樹,若帶權路徑長度最小,稱這樣的二擦函數爲最優二叉樹,也稱爲哈夫曼樹。哈夫曼樹是帶權路徑長度最短的樹,權值較大的結點離根較近。