1. 程式人生 > >資料結構期末複習知識查漏補缺並配(帶詳解的)查漏習題(B樹,雜湊(雜湊),平衡二叉樹,KMP)

資料結構期末複習知識查漏補缺並配(帶詳解的)查漏習題(B樹,雜湊(雜湊),平衡二叉樹,KMP)

一.B樹(也叫B-)與B+樹專題

(1)B樹

重點總結:

1.結點最大的孩子數目稱為B樹的階。所以,2-3樹是3階B樹,2-3-4樹是3階B樹

2.所有葉節點位於同一層次

3.

4.,一般均是升序或降序

5.在B樹上查詢的過程是一個順指標查詢結點和在結點中查詢關鍵字的交叉過程。

6.B樹的資料結構就是為了內外存的資料互動準備的。

7.B樹中一個關鍵字只能在樹中某一個節點上出現,且節點內部關鍵字是有序排列的。 

(2)B+樹

 重點總結:

1.每一個葉子結點都會儲存一個指向後一葉子結點的指標。

2.適合帶有範圍的查詢(隨機查詢,順序查詢都成)

3.

4.

5.

(3)習題鞏固

2-13:葉節點之間互相併不連結

2-14:

最少為ceil(m / 2)。

 

2-15:B+樹解決的就是這個問題

2-17:C是肯定的,因為

D的話根節點除外

B肯定錯

A我暫時不知道(這塊實在學的不精。。。)

補充一道和連結串列有關的與b樹無關的查詢題

二.雜湊(雜湊)專題

解析及知識點補充:

2-2:雜湊查詢不能順序查詢 ,與結點個數無關

2-3:可能有衝突啊

2-7:下圖夠詳細了吧嘿嘿

2-8:就是不能有衝突

 

2-9:

要注意不是6/11而是5/11=0.45哦,因為發現有衝突時 不算當前元素

2-10:

關於查詢成功與不成功總結一下:

成功就是把每個衝突次數加1再加在一塊除以元素個數

不成功就是數離最近的空格的個數(要加上自己本身!!!)

所以這個題就是(5+4+3+2+7*1)/11=21/11(前面可不是4+3+2+1哦)

2-12:

這個有可能沒學過,就是

就是

再補充幾道:

這個是平方探測,沒啥難的其實也

三.平衡二叉樹(動態查詢表)

要注意平衡二叉樹也是二叉搜尋樹,插入的過程要注意把結點調平衡(邊插入邊調整)

方法不會的話參見這篇部落格:https://blog.csdn.net/weixin_42110638/article/details/83963954

解析:

2-3:看下圖

2-4:

這裡有倆公式

1:

最大高度是[log2(n)]+1;

2:

這個題問最大,那你就算一下log2(12)=3.59,取整為4,+1等於5

當然用遞推也是可以的

第一到五層最少的節點數分別是1,2,4,7,12

2-5,6,9同理(前兩個注意下開始位置)

但2-9要注意一下,如果你用遞推公式來算,28介於20(第六層)與33(第七層)之間

這時樹的最大深度最多到6,可不是7哦(原因自己想)

2-7:

要注意平衡因子為左子樹樹高減去右子樹樹高

 

2-8:看圖,C不需要調整的,D是RL旋轉

2-10:

看圖就好,主要要學會LR和RL旋轉方法(都是把最中間大小的樹提上來),別搞錯了

四.KMP演算法

參考部落格:https://blog.csdn.net/nanami809/article/details/49367159