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