查詢|有序表折半查詢判定樹|二叉排序樹|3階B-樹

weixin_33872660發表於2017-11-30

1

畫出對長度為10的有序表進行折半查詢的判定樹,並求其等概率時查詢成功的平均查詢長度。


首先,長度為n的有序表折半查詢判定樹的構造方法為:
1)當n=0時
​折半查詢判定樹為空;
2)當n>0時
​根節點mid(root)=(n+1)/2
​根的左子樹是有序表r[1]~r[mid-1]的折半查詢判定樹(遞迴)
​根的右子樹是有序表r[mid+1]~r[n]的折半查詢判定樹(遞迴)


(5)
(2) (8)

即當n=10時
1)根節點為(10 +1)/2=5
2)根左子樹為r[1]~r[4],左子節點為(4+1)/2=2
    2->left:(1+1)/2=1
    2->right:(3+4)/2=3
        2->right->right =4
3)根右子樹為r[6]~r[10],右子節點為( 6+10)/2=8
    3->left:(6+7)/2 = 6
        3->left->right = 7 
    3->right:(9+10)/2=9
        3->right->right=10

由此遞迴可得判定樹如附件圖

平均查詢長度
ASL=(1×1+2×2+3×4+4×3)/10=29/10

6927087-1d6c3f1a8e7530e6.png
n為10折半查詢判定樹和ASL.png

2

已知如下所示長度為12的表
(Jan,Feb,Mar,Apr,May,June,July,Aug,Sep,Oct,Nov,Dec)
(1)試按表中元素的順序依次插入一棵初始為空的二叉排序樹,畫出插入完成之後##的二叉排序樹,並求其在等概率的情況下查詢成功的平均查詢長度。
(2)若對錶中元素先進行排序構成有序表,求其在等概率的情況下對此有序表進行##折半查詢時查詢成功的平均查詢長度。
(3)按表中元素順序構造一棵平衡二叉排序樹,並求其在等概率的情況下查詢成功的平均查詢長度。


1)按字典序完成二叉排序樹

            Jan
           /    \
      Feb      Mar
      /          /     \
 Apr       June   May
     \       /               \
   Aug  July           Sep
       \                     /
      Dec              Oct
                           /
                        Nov

平均查詢長度ASL=(11+22+33+43+52+61)/12 = 42/12 = 3.5

2)排序構成有序表
Jan | Feb | Mar | Apr | May | June | July | Aug | Sep | Oct | Nov |Dec
1 2 3 4 5 6 7 8 9 10 11 12
平均查詢長度ASL=(11+22+34+45)/12 = 37/12

6927087-65c6b31e3b140964.png
月份有序表折半查詢.png

3)平衡二叉樹
平均查詢長度 ASL = (11+22+34+44+5*1)/12 = 38/12

3

試從空樹開始,畫出按以下次序向2-3樹即3階B-樹中插入關鍵碼的建樹過程:20,30,50,52,60,68,70。如果此後刪除50和68,畫出每一步執行後2-3樹的狀態。


6927087-dc9e9c76bf45bb37.PNG
3階B-.PNG

相關文章