⑴ 二叉排序樹和二叉判定樹有什麼區別
一、用法不同
二叉判定樹是用於描述解決問題的思路,比如可以使用判定樹描述N個數的比較過程,正如你所提到的,它也可以用於描述折半查找的過程,從這個判定樹分析演算法的效率,
二叉排序樹是用於排序的,它是一種排序方法。
二、性質
二叉排序樹又稱為二叉查找樹,是一種特殊的二叉樹。他或者是一種空樹,或者時具有下面性質的二叉樹:
若他的右子樹非空,則右子樹上所有節點的值均大於根節點的值。
若他的左子樹非空,則左子樹上所有節點的值都小於根節點的值。
左、右子樹本身又各時一棵二叉排序樹。
三、查找結果
二叉排序樹首先將給定值和根結點的關鍵字比較,若相等,則查找成功,若不相等,則根據給定值和根結點關鍵字之間的大小關系,在左子樹或右子樹上繼續進行查找。
若查到為空樹時,說明該樹中沒有待查記錄,故查找不成功。
⑵ 二叉排序樹的asl公式
對於二叉排序樹的ASL演算法
二叉排序樹的特點是左孩子小於根節點,右孩子大於根節點
之前尋找博客上計算ASL的演算法時,看到用的是設置一個max值來判斷是否換層,遍歷二叉排序樹,若是大於max則是屬於同一層,賦值給max,直到找到小於max的節點就是下一層,但是對於如果一層中只有最後一個節點(即這一層最大的節點)有右孩子,max值就一直是增加的,則不會換層
解決方法
使用一個父節點數組和隊列,有孩子節點則加入父節點隊列,存儲每一層的父節點數,一層結束後輸出前面的父節點,只留下該層最後一父節點,則可以判斷一層結束;
若節點隊列為空且當前節點無孩子,則整個二叉排序樹結束。