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