1. 程式人生 > >滿二叉樹、完全二叉樹、平衡二叉樹、哈夫曼樹

滿二叉樹、完全二叉樹、平衡二叉樹、哈夫曼樹

滿二叉樹:除了葉節點外每一個結點都有左右子女且葉節點都處在最底層的二叉樹。

這個滿二叉樹應該很好想象,就是一顆非常完美的樹,除了葉節點其他節點都有兩個孩子。


完全二叉樹:只有最下面的兩層結點度小於2,並且最下面一層的結點都集中在該層最左邊的若干位置的二叉樹。

也就是說,在滿叉樹的基礎上,我在最底層從右往左刪去若干節點,得到的都是完全二叉樹。

所以說,滿二叉樹一定是完全二叉樹,但是完全二叉樹不一定是滿二叉樹

下面來看一個完全二叉樹的例子:


平衡二叉樹:又稱為AVL樹,它是一顆空樹或它的左右兩個子樹的高度差的絕對值不超過1

哈夫曼樹:帶權路徑長度達到最小的二叉樹,也叫做最優二叉樹。

注意到這裡,哈夫曼樹只是一棵最優二叉樹,不一定是完全二叉樹,也不一定是平衡二叉樹。完全是八竿子打不著的事情,人家哈夫曼樹不關注樹的結構,只關注帶權路徑長度好嗎。。

下面再說幾點關於二叉樹性質,對於解答筆試題中的小題目很有用。

1.對於一棵有著k層的二叉樹,最多有節點個數為 2^k-1,最少有k個節點

2.對於第k層,最多有節點個數為 2^(k-1)個

3.對於一棵非空的二叉樹,葉子節點數目總比度為2的節點數要多1