資料結構複習之【樹】

來源:互聯網
上載者:User
文章目錄
  • 樹-->二叉樹
  • 森林-->二叉樹
  •  二叉樹-->樹
  •  二叉樹-->森林
 名詞解釋 

 

樹這個資料結構用到了遞迴的概念:樹的子樹還是樹;

度:節點的子樹個數;

樹的度:樹中任意節點的度的最大值;

兄弟:兩節點的parent相同;

層:根在第一層,以此類推;

高度:葉子節點的高度為1,根節點高度最高;

有序樹:樹中各個節點是有次序的;

森林:多個樹組成;

 

樹的標記法

 

1.雙親標記法:每個節點儲存:資料、parent在數組中的下標;

2.孩子標記法:全部節點群組成一個數組,每個數組指向一個單鏈表,存放其孩子;如:

3.雙親孩子標記法

4.孩子兄弟標記法

此種方法的好處在於一個多叉樹能夠轉換成一顆二叉樹,是樹轉換成二叉樹的好辦法;

線性表是樹的特殊情況;

斜樹:所有節點只有左節點或右節點;比如:

滿二叉樹:葉子節點一定要在最後一層,並且所有非葉子節點都存在左孩子和右孩子;

完全二叉樹:從左至右、從上到下構建的二叉樹;比如:

性質

1.第i層至多有個節點;

2.深度為k的樹最多有2^k -1個節點;

3.任意二叉樹,度為0的節點數=度為2的節點數+1;

4.如果i為父親的編號,則孩子的編號為2i和2i+1;

5.如果孩子的編號為k,則父親的編號為floor(k/2);

二叉樹的儲存結構

 

(1)順序儲存:只適用於完全二叉樹;

(2)鏈式儲存:最通用的儲存方法;

但是這樣很浪費空間,因為會有很多null 指標(如果有n個節點,則有2n個left、right指標,但是用到的只有n-1個指標)

改進:線索二叉樹:將null 指標連結到前驅或後繼節點;(此處前驅和後繼是按照中序遍曆上講的)

節點資料結構如:

比如:

一般構造線索二叉樹的過程步驟如下:

(1)構造一般二叉樹;

(2)遍曆二叉樹的同時,建立線索二叉樹;

二叉樹的遍曆

 

(1)前序走訪:先雙親、再左孩子、最後右孩子;

(2)中序遍曆:先左孩子、再雙親、最後右孩子;

(3)後序遍曆:先左孩子、再右孩子、最後雙親;

(4)層次遍曆:一層一層,從左至右、從上到下遍曆;

注意:

(1)已知前序、後序遍曆結果,不能推匯出一棵確定的樹;

(2)已知前序、中序遍曆結果,能夠推匯出後序遍曆結果;

(2)已知後序、中序遍曆結果,能夠推匯出前序走訪結果;

 

擴充二叉樹

對於一般二叉樹的擴充,為了能夠通過一個遍曆序列建立二叉樹,擴充二叉樹:

如果存在遍曆序列:AB##C##,則可以很容易的建立二叉樹;

此種方式很方便,因為一般來說都需要三種遍曆方式中的兩種才可以確定一個二叉樹;

樹、森林、二叉樹的轉換

 

樹-->二叉樹

 

根據兄弟孩子標記法進行轉換;

 

森林-->二叉樹

 

 二叉樹-->樹

 二叉樹-->森林

 

Huffman編碼

 

Huffman是一種首碼編碼;

Huffman編碼是建立在Huffman樹的基礎上進行的,因此為了進行Huffman編碼,必須先構建Huffman樹;

樹的路徑長度是每個分葉節點到根節點的路徑之和;

帶權路徑長度是(每個分葉節點的路徑長度*wi)之和;

Huffman樹是最小帶權路徑長度的二叉樹;

構造Huffman樹的過程:

(1)將各個節點按照權重從小到大排序;

(2)去最小權重的兩個節點,並建立一個父節點作為這兩個節點的雙親,雙親節點的權重為子節點權重之和,再將此父節點放入原來的隊列;

(3)重複(2)的步驟,直到隊列中只有一個節點,此節點為根節點;

構造完Huffman樹之後,就可以進行Huffman編碼了,編碼規則:

(1)左分支填0,右分支填1;

Huffman解碼過程

(1)給定一個01串,將01串進行Huffman樹,到葉子節點了就表明已經解碼一個節點,然後再次遍曆Huffman樹;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.