資料結構之樹

2021-08-07 06:04:41 字數 3233 閱讀 1394

1.樹是什麼?

樹是n個結點組成的一種非線性結構。

2.樹的屬性:

(1)父母、孩子和兄弟結點:

結點的前驅結點稱為父母結點,後繼結點是孩子,相同父母結點的結點稱為兄弟。

(2)度:

結點的度指的是擁有子樹的數量。葉子結點的度為0,樹的度是結點的度的最大值。

(3)結點層次,樹的高度:

結點的層次指的是結點處於樹的層次位置,根節點的層次為1,依次增加。樹的高度或深度是樹中結點的最大層次樹。

(4)邊,路徑

舉例:a,b結點之間的邊是(a,b)。

a,到e的路徑是(a,b,e),路徑長度是2。

(5)無序樹和有序樹

結點之間可以交換順序的稱為無序樹,結點之間不可以交換位置的稱為有序樹。

(6)森林

是n棵不相交的樹的集合。

3.二叉樹

(1)什麼是二叉樹?

二叉樹是由乙個根節點和最多兩個左右不相交的子樹組成的。二叉樹的度最大是2。

(2)二叉樹的性質

a.若根節點的層次為1,則第n層最多有2的(n-1)次方個結點。

b.在高度為h的二叉樹中,最多有2的h次方減1個結點。

c.若一棵二叉樹的葉子結點數為a,2度結點數為b,則a = b+1。

d.一棵具有n個結點的完全二叉樹的高度是

e.一棵具有n個結點的完全二叉樹,對序號為0(包括)到n之間的結點有:

若i=0,則i為根節點,若i>0,則i的父母結點序號是[(i-1)/2]。

(3)二叉樹的遍歷規則

a.先根遍歷:根節點=>左結點=>右節點

b.中根遍歷:左結點=>根節點=>右節點

c.後根遍歷:左結點=>右節點=>根節點

d層次遍歷:遍歷過程從根節點開始,逐層深入,從左到右依次訪問完當前層所有結點,再訪問下一層。二叉樹的層次遍歷的特點是兄弟優先。

(4)完全二叉樹和滿二叉樹

滿二叉樹是高度為h具有2的h次方減1個結點的二叉樹。一棵具有n個結點高度為h的二叉樹,如果它的每個結點都與高度為h的滿二叉樹中序號為0~n-1的結點一一對應,則稱這棵樹為完全二叉樹。

(5)二叉樹的儲存結構

i:鏈式儲存結構:包括二叉鍊錶和三叉鍊錶

第一種:二叉鍊錶

第二種:三叉鍊錶

ii:順序儲存結構

僅適用於完全二叉樹和滿二叉樹,將一棵完全二叉樹的所有結點按結點序號進行順序儲存。順序儲存結構依靠陣列元素的相鄰位置反映資料的邏輯結構,因此順序儲存結構能夠儲存完全二叉樹。

4.線索二叉樹

在二叉樹的二叉鍊錶表示中,若結點的子樹為空,則指向孩子的鏈為空值。具有n個結點的二叉樹,其中n-1條鏈表達各結點間的關係,n+1條鏈為空。線索二叉樹利用這些空鏈儲存結點在某種次序下的前驅和後繼關係。也就是非空的鏈保持不變,仍然指向該結點的左右孩子結點,使空的left域指向前驅結點,使空的right域指向後繼結點。指向前驅或後繼結點的鏈稱為線索,對二叉樹以某種次序進行遍歷並加上線索的過程稱為線索化。

5.huffman編碼和huffman樹

(1)huffman編碼:是資料壓縮技術中的一種無失真壓縮方法。資料壓縮技術通過重新編碼將資料進行壓縮儲存,從而減少資料占用的儲存空間。使用時,再進行解壓縮。壓縮方法主要有無失真壓縮和有失真壓縮。無失真壓縮的原理是統計被壓縮資料中重複資料的出現次數來進行編碼。無失真壓縮能確保解壓後的資料不失真。

(2)huffman編碼的實現步驟:

a.統計原始資料中各信源符號出現的頻率,按頻率高低的次序排列。

b.將兩個最小的頻率相加,作為新信源符號的頻率。

c.重複上兩步,直到和為1;在每次合併信源符號時,將合併的信源符號分別賦0和1。

d.尋找頻率為1處到各個信源符號的路徑,記錄下路徑上的0和1,從而得到每個信源符號的編碼,也保證了原始資料中的大部分信源符號由較短編碼組成,實現壓縮。

(3)huffman樹:

a.二叉樹的外路徑長度:一棵二叉樹,從根節點到所有葉子結點的路徑長度之和。

b.二叉樹的路徑長度:從根結點到所有結點的路徑長度之和。

c.表示編碼的二叉樹只有二度結點和葉子結點,沒有一度結點。

d.權:在字元的使用概率各不相同的情況下,將字元的使用概率作為二叉樹中葉子結點的值。

e.帶權路徑長度:從根到x結點的帶權路徑長度是x結點的權值與從根到x結點路徑長度的乘積。

f:帶權外路徑長度:所有葉子結點的帶權路徑長度之和。

g.最優二叉樹:huffman樹定義為帶權外路徑長度最短的二叉樹(使權值越大的葉子結點越靠近根節點)。

6.樹的遍歷

樹主要有兩種遍歷規則:先根次序遍歷和後根次序遍歷。

樹的遍歷規則也是遞迴的。

(1)樹的先根遍歷規則:

訪問根節點–>按照從左到右的次序遍歷根的每一棵子樹

(2)樹的後根遍歷規則:

按照從左到右的次序遍歷根的每一棵子樹–>訪問根節點

資料結構之 樹

1.雙親表示法 下標 資料 parentid 2.孩子表示法 data child1 child2 child3 3.雙親孩子表示法 下標 parentid firstchildid secondchildid 節點 下標 next 頁的話next應該是null 4.孩子兄弟表示法 data 第一次...

資料結構之樹

一 樹的基本概念 樹 tree 是元素的集合,樹有多個節點可以儲存元素 二 二叉樹 每個節點最多有兩個子節點的樹稱為二叉樹 常用來做二分查詢 binary search 等 三 b樹 即二叉搜尋樹 binary search tree 是一種特殊形態的二叉樹 1 所有節點最多擁有2個子節點 2 所有...

資料結構之樹

樹是節點的有限集合.度 a的度是3 b的度是2 d的度是2 c的度為0 當前節點的直接分支 葉子 終端節點就是葉子 e f g h c 根 非終端節點就是根 a b d 有序樹 如果e f不可以隨意換順序 就是有序樹 無序樹 如果 e f可以隨意換順序而且不影響邏輯 祖先 對e來說 b,a都是祖先 ...