自由樹
自由樹是一個連通的,無回路的無向圖。
令G=(V,E)為一個無向圖。下面的表述是等價的。
1) G是自由樹。
2) G中任意兩個頂點由唯一一條簡單路徑得到。
3) G是連通的,但從E中去掉任何邊后得到的圖都是非連通的。
4) G是無回路的,且|E|=|V|-1。
5) G是連通的,且|E|=|V|-1。
6) G是無回路的,但添加任何邊到E中得到的圖包含回路。
二叉樹
在計算機科學中,二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱作“左子樹”(left subtree)和“右子樹”(right subtree)。
二叉樹的每個結點至多只有二棵子樹(不存在度大於2的結點),二叉樹的子樹有左右之分,次序不能顛倒。
二叉樹的第i層至多有2^(i-1)個結點;
深度為k的二叉樹至多有2^k-1個結點;(等比數列1+2+4+…+2^(k-1) = 2^k-1)。
對任何一棵二叉樹T,如果其終端結點數為n0,度為2的結點數為n2,則n0 = n2 + 1。
樹和二叉樹的三個主要差別:
1) 樹的結點個數至少為1,而二叉樹的結點個數可以為0;
2) 樹中結點的最大度數沒有限制,而二叉樹結點的最大度數為2;
3) 樹的結點無左、右之分,而二叉樹的結點有左、右之分。
滿二叉樹
一棵深度為k,且有2^k-1個節點的樹是滿二叉樹。
另一種定義:除了葉結點外每一個結點都有左右子葉且葉子結點都處在最底層的二叉樹。
這兩種定義是等價的。
從樹的外形來看,滿二叉樹是嚴格三角形的,大家記住下面的圖,它就是滿二叉樹的標准形態:
所有內部節點都有兩個子節點,最底一層是葉子節點。
性質:
1) 如果一顆樹深度為h,最大層數為k,且深度與最大層數相同,即k=h;
2) 它的葉子數是: 2^(h-1)
3) 第k層的結點數是: 2^(k-1)
4) 總結點數是: 2^k-1 (2的k次方減一)
5) 總節點數一定是奇數。
6) 樹高:h=log2(n+1)。
完全二叉樹
完全二叉樹是由滿二叉樹而引出來的。對於深度為K的,有n個結點的二叉樹,當且僅當其每一個結點都與深度為K的滿二叉樹中編號從1至n的結點一一對應時稱之為完全二叉樹。
若設二叉樹的深度為h,除第 h 層外,其它各層 (1~h-1) 的結點數都達到最大個數,第h 層所有的結點都連續集中在最左邊,這就是完全二叉樹。
(大家好好理解一下上面兩個定義,是等價的~~)
滿二叉樹一定是完全二叉樹,完全二叉樹不一定是滿二叉樹。
下面是完全二叉樹的基本形態:
完全二叉樹的性質:
1) 深度為k的完全二叉樹,至少有2^(k-1)個節點,至多有2^k-1個節點。
2) 樹高h=log2n + 1。
對滿二叉樹、完全二叉樹總結點及樹高的總結: