查詢|有序表折半查詢判定樹|二叉排序樹|3階B-樹
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
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
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樹的狀態。
相關文章
- 折半查詢排序樹畫圖和排序
- 二叉查詢樹(二叉排序樹)排序
- 二叉查詢樹【二叉排序樹】構建和查詢演算法 PHP 版排序演算法PHP
- 二叉樹 & 二叉查詢樹二叉樹
- 查詢二叉樹二叉樹
- 二叉查詢樹
- 二叉排序樹查詢,插入,刪除排序
- 平衡二叉查詢樹:紅黑樹
- 二叉查詢樹和笛卡爾樹
- 手擼二叉樹——二叉查詢樹二叉樹
- 五大經典查詢(1)_二叉排序樹查詢排序
- 資料結構之查詢(順序、折半、分塊查詢,B樹、B+樹)資料結構
- #查詢演算法#【2】二叉排序樹演算法排序
- 轉:C++實現的變種二分查詢法(折半查詢)--二叉查詢樹C++
- B樹(多路查詢樹)
- Python 樹表查詢_千樹萬樹梨花開,忽如一夜春風來(二叉排序樹、平衡二叉樹)Python排序二叉樹
- 二叉查詢樹的插入刪除查詢
- 二叉樹路徑查詢二叉樹
- 多路查詢樹
- 平衡查詢樹
- oracle 樹查詢Oracle
- 樹形查詢
- 多路查詢樹(2-3 樹、2-3-4 樹、B 樹、B+ 樹)
- Amazing tree —— 二叉查詢樹
- 二叉查詢樹的個數
- 二叉查詢樹(查詢、插入、刪除)——C語言C語言
- 查詢與排序02,折半查詢排序
- 5分鐘瞭解二叉樹之二叉查詢樹二叉樹
- 滿二叉樹、完全二叉樹、平衡二叉樹、二叉搜尋樹(二叉查詢樹)和最優二叉樹二叉樹
- oracle樹形查詢Oracle
- B樹查詢,磁碟查詢資料
- 二叉查詢樹概念及實現
- C#實現二叉查詢樹C#
- 【資料結構】查詢結構(二叉排序樹、ALV樹、雜湊技術雜湊表)資料結構排序
- mysql樹狀查詢(轉)MySql
- 【谷歌面試題】有序輸出兩棵二叉查詢樹中的元素谷歌面試題
- JavaScript實現簡單二叉查詢樹JavaScript
- 二叉查詢樹的實現——C++C++