數據結構(七)二叉樹
阿新 • • 發佈:2017-06-13
廣度優先 -1 XML -o 滿二叉樹 nal 如果 數據 中序
還需要證明前驅後後繼是否為孩子,所以加入了兩個標誌位,單個結點的結構如下
定義
特點
特殊的二叉樹
斜樹
顧名思義,其中的結點都只有一個,又分為左斜樹和右斜樹,這時候又有疑惑了,這種數據結構不是有線性表一樣嗎,沒錯,線性表是一種特殊的樹滿二叉樹
完全二叉樹
這個定義有點繞,簡單來說就是所有的結點必須是有順序的,不能跳躍存在二叉樹的性質
1.在二叉樹的第i層至多有2的(i-1)次方個結點,參考滿二叉樹 2.深度遊k的二叉樹至多有2的k次方-1個結點,參考滿二叉樹 3.任意二叉樹,終端結點為n0,度為2的結點為n2,度為1的結點為n1,則n0=n2+1 下面是推倒過程,設連接線為x,總結點數為n,則: n=n0+n1+n2 x=n1+2n2 x=n-1 求得n0=n2+1存儲結構
二叉樹的順序結構
這有點像廣度優先遍歷,但這裏關註的是存儲結構,不是遍歷方式,順序結構一般只用於滿二叉樹,普通二叉樹會有空間浪費,例如(^表示空)二叉鏈表
一個數據域,兩個指針域分別表示左孩子和右孩子二叉樹的遍歷
前序遍歷
中序遍歷
後序遍歷
層序遍歷
這四種遍歷名稱都是針對每一個根結點而言, 前序:先遍歷根節點(深度優先遍歷) 中序:中間遍歷根節點 後序:最後遍歷根節點 層序:從根節點一層一層往下遍歷(廣度優先遍歷)線索二叉樹
定義
指向前驅和後繼的指針稱為線索,加上線索的二叉鏈表稱為線索二叉鏈表,相應的二叉樹就成為思安所二叉樹場景
赫夫曼樹及其應用
定義及原理
從樹中一個結點到另一個結點之間的分支構成兩個結點之間的路徑,路徑上的分支數目稱做路徑的長度 例如這兩個二叉樹 二叉樹a中,從根結點到D結點的路徑為4,二叉樹b中,從根結點到D結點的路徑為2 二叉樹a的樹路徑長度為1+1+2+2+3+3+4+4=20 二叉樹b的樹路徑長度為1+1+2+2+2+2+2+3+3=16 如果考慮帶權路徑,路徑與權的乘積才是最終的路徑長度定義
也稱為最優二叉樹 如何構建赫夫曼樹如何構建赫夫曼樹總結
赫夫曼樹的應用-赫夫曼編碼
定義
數據壓縮的原理基於此數據結構(七)二叉樹