1. 程式人生 > >二叉樹,完全二叉樹,滿二叉樹,平衡二叉樹的區別

二叉樹,完全二叉樹,滿二叉樹,平衡二叉樹的區別

度:指的是一個節點擁有子節點的個數。如二叉樹的節點的最大度為2。

深度:數的層數,根節點為第一層,依次類推。

葉子節點:度為0的節點,即沒有子節點的節點。

樹:樹中的每一個節點,可以有n(後續節點)個子節點,但是每個節點只有一個前驅節點。

二叉樹:除了葉子節點外,每個節點只有兩個分支,左子樹和右子樹,每個節點的最大度數為2.

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


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

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

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


平衡二叉樹:樹的左右子樹的高度差不超過1的數,空樹也是平衡二叉樹的一種。

平衡二叉樹,又稱AVL樹。它或者是一棵空樹,或者是具有下列性質的二叉樹:它的左子樹和右子樹都是平衡二叉樹,且左子樹和右子樹的高度之差之差的絕對值不超過1.。

常用演算法有:紅黑樹AVL樹、Treap等。

平衡二叉樹的調整方法

平衡二叉樹是在構造二叉排序樹的過程中,每當插入一個新結點時,首先檢查是否因插入新結點而破壞了二叉排序樹的平衡性,若是,則找出其中的最小不平衡子樹,在保持二叉排序樹特性的前提下,調整最小不平衡子樹中各結點之間的連結關係,進行相應的旋轉,使之成為新的平衡子樹。


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

不關心樹的結構,只要求帶權值的路徑達到最小值,哈夫曼樹可能是完全二叉樹也可能是滿二叉樹。

二叉樹的性質:

(1) 在二叉樹中,第i層的結點總數不超過2^(i-1);

(2) 深度為h的二叉樹最多有2^h-1個結點(h>=1),最少有h個結點;

(3) 對於任意一棵二叉樹,如果其葉結點數為N0,而度數為2的結點總數為N2,

則N0=N2+1;

(4) 具有n個結點的完全二叉樹的深度為int(log2n)+1

(5)有N個結點的完全二叉樹各結點如果用順序方式儲存,則結點之間有如下關係:

若I為結點編號則 如果I<>1,則其父結點的編號為I/2;

如果2*I<=N,則其左兒子(即左子樹的根結點)的編號為2*I;若2*I>N,則無左兒子;

如果2*I+1<=N,則其右兒子的結點編號為2*I+1;若2*I+1>N,則無右兒子。

(6)給定N個節點,能構成h(N)種不同的二叉樹。

h(N)為卡特蘭數的第N項。h(n)=C(n,2*n)/(n+1)。