樹和二叉樹

2021-06-16 07:04:23 字數 2760 閱讀 7234

4.1樹的概念

樹的遞迴定義如下:(1)至少有乙個結點(稱為根)(2)其它是互不相交的子樹

1.樹的度——也即是寬度,簡單地說,就是結點的分支數。以組成該樹各結點中最大的度作為該樹的度,如上圖的樹,其度為3;樹中度為零的結點稱為葉結點或終端結點。樹中度不為零的結點稱為分枝結點或非終端結點。除根結點外的分枝結點統稱為內部結點。

2.樹的深度——組成該樹各結點的最大層次,如上圖,其深度為4;

3.森林——指若干棵互不相交的樹的集合,如上圖,去掉根結點a,其原來的二棵子樹t1、t2、t3的集合就為森林;

4.有序樹——指樹中同層結點從左到右有次序排列,它們之間的次序不能互換,這樣的樹稱為有序樹,否則稱為無序樹。

5.樹的表示

樹的表示方法有許多,常用的方法是用括號:先將根結點放入一對圓括號中,然後把它的子樹由左至右的順序放入括號中,而對子樹也採用同樣的方法處理;同層子樹與它的根結點用圓括號括起來,同層子樹之間用逗號隔開,最後用閉括號括起來。如上圖可寫成如下形式:

(a(b(e(k,l),f),c(g),d(h(m),i,j)))

4.2二叉樹

1.二叉樹的基本形態:

二叉樹也是遞迴定義的,其結點有左右子樹之分,邏輯上二叉樹有五種基本形態:

(1)空二叉樹——(a);

(2)只有乙個根結點的二叉樹——(b);

(3)右子樹為空的二叉樹——(c);

(4)左子樹為空的二叉樹——(d);

(5)完全二叉樹——(e)

注意:儘管二叉樹與樹有許多相似之處,但二叉樹不是樹的特殊情形。  

2.兩個重要的概念:

(1)完全二叉樹——只有最下面的兩層結點度小於2,並且最下面一層的結點都集中在該層最左邊的若干位置的二叉樹;

(2)滿二叉樹——除了葉結點外每乙個結點都有左右子女且葉結點都處在最底層的二叉樹,。

如下圖:

3.二叉樹的性質

性質1二叉樹的第i層上至多有2i-1個結點(i>=1)

性質2深度為h的二叉樹至多有2h-1個結點,最少有h個結點;

性質3對於任意一棵二叉樹,如果其葉結點數為n0,而度數為2的結點總數為n2,則n0=n2+1;

推論:如果一棵m度樹中有n1個度為1的結點,n2個度為2的結點,…….有nm個度為m的結點,則該樹中葉結點的的個數=______________.

分析:令n為總結點數,b為樹枝總數,點則有:n=b+1,因為n= n0+n1+n2+……+nm,

b= n1+2n2+……+mnm,所以葉結n0=n2+2n3+……+(m-1)nm+1.

性質4具有n個(n>0)結點的完全二叉樹的深度為[log2

(n+1)]或[log2

n]+1。

(5)有n個結點的完全二叉樹各結點如果用順序方式儲存,則結點之間有如下關係:

若i為結點編號則 如果i<>1,則其父結點的編號為i/2;

如果2*i<=n,則其左兒子(即左子樹的根結點)的編號為2*i;若2*i>n,則無左兒子;

如果2*i+1<=n,則其右兒子的結點編號為2*i+1;若2*i+1>n,則無右兒子。

4.二叉樹的遍歷運算(遞迴定義)

(1)先序遍歷

訪問根;按先序遍歷左子樹;按先序遍歷右子樹

(2)中序遍歷

按中序遍歷左子樹;訪問根;按中序遍歷右子樹

(3)後序遍歷

按後序遍歷左子樹;按後序遍歷右子樹;訪問根

*規律:不同形態的二叉樹數目恰好是前序序列均為1,2,3,…,n的二叉樹所能得到的中序序列的數目,即是1/(n+1)c2n

n。例如:按中序遍歷二叉樹所得的結果序列為abc,試給出所有可能得到這一遍歷的二叉樹。

分析:n=3, 則1/(n+1)c

2nn=1/(3+1)c

63=5種。

4.3

二叉樹的應用

哈夫曼樹與哈夫曼碼

樹的路徑長度:一棵樹的每乙個葉結點到根結點的路徑長度的和。

帶權二叉樹:給樹葉結點賦上某個實數值(稱葉結點的權)。

帶權路徑長度:各葉結點的路徑長度與其權值的積的總和。

哈夫曼樹(最優二叉樹):帶權路徑長度最小的二叉樹。

如何構建哈夫樹:(思想是:權越大離跟越近)

**:

二叉樹 滿二叉樹和完全二叉樹

二叉樹是一種很重要的非線性資料結構,它是樹結構的一種重要的型別 它不是樹結構的特殊情況 其特徵是每個節點最多有兩個子樹。二叉樹的特點 二叉樹每個結點最多有 2個子結點,樹則無此限制 二叉樹中 結點的子樹 分成左子樹和右子樹,即使某結點只有一棵子樹,也要指明該子樹是左子樹,還是右子樹,就是說 二叉樹是...

樹 二叉樹 滿二叉樹 完全二叉樹 完滿二叉樹

目錄名稱作用根 樹的頂端結點 孩子當遠離根 root 的時候,直接連線到另外乙個結點的結點被稱之為孩子 child 雙親相應地,另外乙個結點稱為孩子 child 的雙親 parent 兄弟具有同乙個雙親 parent 的孩子 child 之間互稱為兄弟 sibling 祖先結點的祖先 ancesto...

二叉樹和完全二叉樹

二叉樹規律 假設根節點的高度為0 二叉樹是每個節點至多只有兩個節點的樹 深度為i所在的層至多有 2 i個節點 高度為k的二叉樹至多有2 k 1 1個節點 n0表示度為0的節點,n2表示度為2的節點,存在n0 n2 1 對所有樹有 節點個數 邊數 1 完全二叉樹規律 節點數為n的完全二叉樹,其高度為 ...