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。
例子: