二叉排序樹(BST)、平衡二叉樹(AVL)、哈夫曼樹的部分性質


1、二叉排序樹的中序遍歷得到的就是所有結點從小到大的排列。

   平衡二叉樹一定是二叉排序樹。

   二叉排序樹上結點的關鍵字的值不可能相同

2、二叉排序樹的查找效率,主要取決於樹的高度。

   平均查找長度(ASL)=各層結點樹 * 深度 / 總結點數

   查找成功和查找失敗 的平均查找長度,如下圖所示,葉子結點可以查找成功,葉子結點再往下則查找失敗。

 3、二叉排序樹刪除一個結點,可以分三種情況。

  a、刪除葉結點,直接刪除,不改變二叉排序樹的性質。

  b、刪除的結點z有一個左子樹或者右子樹,則直接讓z的子結點代替z。

  c、若結點z有左右兩顆子樹,則用按中序排列得到的z結點的直接后繼(或直接前驅)代替z

第三種情況的例子:

4、平衡二叉樹的  平衡因子=左子樹深度-右子樹深度

5、深度為h的平衡二叉樹的最少結點數 Nh=Nh-1+Nh-2+1。

   當所有非葉子結點平衡因子為1的時候,整個平衡二叉樹擁有最少結點數。根結點的深度為1,所以左子樹的高度為h-1,因為平衡因子為1,即根結點的左子樹比右子樹的深度大1,所以右子樹的深度為h-2,這樣可以擁有最少的結點數。我們設N0=0,由圖可知N1=1,N2=2。其他深度的最少結點數可以根據公式計算,在實際計算中可以看到利用了斐波那契數列。

6、平衡二叉樹AVL的調整方法:LL、RR、LR、RL

 

 

 

 每次調整的是從下往上數最小的不平衡子樹!!

 只需要找三個結點。  

7、帶權路徑長度(WPL),指的是所有葉結點的帶權路徑長度之和。

  WPL= ∑ 每個葉結點的權值 * 該葉結點到根結點的路徑長度

  如圖所示:

 8、哈夫曼樹:就是帶權路徑長度WPL最小的二叉樹。

 9、哈夫曼編碼中沒有一個編碼是另一個編碼的前綴。構造出的哈夫曼樹左子樹為0,右子樹為1,即可得到編碼。

  相同的結點構造出來的哈夫曼樹可能不同,但是他們的帶權路徑長度WPL是相同的。

  構造過程中需要遵循幾個原則:

  a、左側的結點小於右側的結點 

     b、如果兩個結點合並得到一個新結點,剩下的結點中有兩個或兩個以上結點的值都小於這個新結點,則需要把哪兩個最小的結點,單獨生成一棵樹,隨后再合並。如下圖中的6、7、8、9。

例子:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM