樹的性質:
1、高度為 m 的樹中第 i 層上至多有 mi-1 個結點(i≥1)。
2、高度為 h 的 m 叉樹至多有(mh-1)/(m-1)個結點。
證明:等比數列求和 S=1+m+m2+......mh-2+mh-1=(mh-1)/(m-1) , 注意等比數列求和的n指的是相數而不是最高項的次數。
3、具有n個結點的m叉樹的最小高度為⌈logm(n(m-1)+1)⌉。
證明:思路是只有當這n個結點建立的m叉樹為滿的時候,樹的高度才會最低。
層次 度為3時的結點數 度為m時的結點數
1 3^0 m^0
2 3^1 m^1
3 3^2 m^2
………………………………………………
i 3^(i-1) m^(i-1)
………………………………………………
h 3^(h-1) m^(h-1)
所以得到n=m^0+m^1+…+m^(h-1)=(m^h-1)/(m-1),解得h>=logm(n(m-1)+1),即logm(n(m-1)+1)向上取整。
4、樹的路徑長度是指樹根到每個結點的路徑長的總和,根到每個結點的路徑長度的最大值應是樹的高度減1。(注意與哈夫曼樹的帶權路徑長度區別)
5、常見的樹結點與度之間的關系:
a. 總結點數=n0+n1+n2+....+nm
b. 總分支數=1n1+2n2+....+mnm(度為m的結點引出m條分支)
c. 總結點數=總分支數+1
二叉樹的性質:
1、在含有n個結點的二叉鏈表中,含有n+1個空鏈域(重要結論)。
證明:首先要明白鏈域是什么意思:
a. 鏈就代表指針,就是下個元素的地址。
b. 鏈表中一個結點可以分為兩個部分,也可以說是區域,一個區域存放指針,被稱為指針域,另一個區域存放數據,叫做數據域。鏈表中的指針域中的內容就是指針,單鏈表中一個指針域存放一個指針,雙鏈表中兩個指針域各存放一個指針。
2、若 i≤⌊n/2⌋ ,則結點 i 為分支結點,否則為葉子結點。
3、若 n 為奇數,則每個分支結點都有左孩子和右孩子;若 n 為偶數,則編號最大的分支結點(編號為n/2)只有左孩子,沒有右孩子,其余分支結點左、右孩子都有(默認是指完全二叉樹,包括滿二叉樹)。
證明:性質2和3本質上是同一件事,即:
如何證明對於編號為 i 的結點,若有雙親,則其雙親為 ⌊i/2⌋,若有左孩子,則左孩子為2i;若有右孩子,則右孩子為2i+1。
推廣到滿 m 叉樹:
規定:高度h,滿m叉樹,根結點在第1層,順序編號。
4、具有n個(n>0)結點的完全二叉樹的高度為 ⌈log2(n+1)⌉ 或 ⌊log2n⌋ +1 。
證明:
5、分支結點:就是總結點減去葉子結點。
6、二叉樹的寬度:具有最多結點數的層中包含的結點數。
森林的性質:
1、對森林所對應的二叉樹進行中序遍歷,相當於對森林中的每一棵樹從左到右進行后序遍歷。