一、完全二叉樹和優(yōu)異二叉樹的區(qū)別
完全二叉樹
完全二叉樹是指除了最后一層外,其他每一層都必須填滿節(jié)點(diǎn),并且最后一層的節(jié)點(diǎn)都必須靠左排列的二叉樹。也就是說,如果一個(gè)完全二叉樹的深度為h,則除了第h層外,其它各層節(jié)點(diǎn)數(shù)都達(dá)到最大值,第h層所有節(jié)點(diǎn)都連續(xù)集中在最左邊。
優(yōu)異二叉樹
優(yōu)異二叉樹,也叫哈夫曼樹,是指帶權(quán)路徑長度最小的二叉樹。在哈夫曼樹中,帶權(quán)路徑長度等于樹中所有葉子節(jié)點(diǎn)的權(quán)值乘以它們到根節(jié)點(diǎn)的路徑長度之和。在構(gòu)造哈夫曼樹的過程中,節(jié)點(diǎn)的權(quán)值越大,它距離根節(jié)點(diǎn)就越近。
區(qū)別
完全二叉樹的形態(tài)比較固定,每一層的節(jié)點(diǎn)數(shù)是確定的;而優(yōu)異二叉樹的形態(tài)可以根據(jù)節(jié)點(diǎn)權(quán)值的不同而有所不同,節(jié)點(diǎn)數(shù)也沒有固定的限制。完全二叉樹的構(gòu)造不需要根據(jù)節(jié)點(diǎn)權(quán)值來確定,而是按照深度優(yōu)先的原則,一層一層從左到右地填充節(jié)點(diǎn)。優(yōu)異二叉樹的構(gòu)造則是基于貪心算法,按照節(jié)點(diǎn)權(quán)值從小到大的順序來構(gòu)造。完全二叉樹中,任何一個(gè)節(jié)點(diǎn)的左右子節(jié)點(diǎn),如果存在,一定是連續(xù)的;而優(yōu)異二叉樹中,同一個(gè)節(jié)點(diǎn)的左右子節(jié)點(diǎn)可能會不連續(xù)。總的來說,完全二叉樹更多地用于數(shù)據(jù)結(jié)構(gòu)和算法中的一些具體實(shí)現(xiàn),比如堆排序、優(yōu)先隊(duì)列等;而優(yōu)異二叉樹則更多地用于信息編碼和壓縮等領(lǐng)域,比如哈夫曼編碼。
延伸閱讀:
二、樹的概念以及相關(guān)概念
樹是一種非線性數(shù)據(jù)結(jié)構(gòu),由(n>0)個(gè)節(jié)點(diǎn)組成的一個(gè)具有層次關(guān)系的集合。
根節(jié)點(diǎn):沒有父節(jié)點(diǎn)的節(jié)點(diǎn)
葉子結(jié)點(diǎn):沒有子節(jié)點(diǎn)的節(jié)點(diǎn),即度為0的節(jié)點(diǎn)
節(jié)點(diǎn)的度:一個(gè)節(jié)點(diǎn)含有的子節(jié)點(diǎn)的個(gè)數(shù)稱為該節(jié)點(diǎn)的度
樹的度:一個(gè)樹中最大的節(jié)點(diǎn)的度為該樹的度
相關(guān)公式:
節(jié)點(diǎn)數(shù)=分支數(shù)+1
節(jié)點(diǎn)數(shù)=度為0的節(jié)點(diǎn)+度為1的節(jié)點(diǎn)+度為2的節(jié)點(diǎn)
分支數(shù)=度為1的節(jié)點(diǎn)+2*度為2的節(jié)點(diǎn)