B樹和B+樹

B樹

B樹,?稱多路平衡查找樹,B樹中所被允許的孩?個數的最?值稱為B樹的階,通常?m表示。?棵m階B樹或為空樹,或為滿?如下特性的m叉樹:
1)樹中每個結點?多有m棵?樹,即?多含有m-1個關鍵字。
2)若根結點不是終端結點,則?少有兩棵?樹。
3)除根結點外的所有?葉結點?少有 棵?樹,即?少含有 -1個關鍵字。
5)所有的葉結點都出現在同?層次上,并且不帶信息(可以視為外部結點或類似于折半查找判定樹的查找失敗結點,實際上這些結點不存在,指向這些結點的指針為空)。

m階B樹的核?特性:
1) 根節點的?樹數∈[2, m],關鍵字數∈[1, m-1]。
其他結點的?樹數∈[ ?m/2?, m];關鍵字數∈[ ?m/2?-1, m-1]
2)對任?結點,其所有?樹?度都相同
3)關鍵字的值:?樹0<關鍵字1<?樹1<關鍵字2<?樹2<…. (類??叉查找樹 左<中<右)

408算B樹的?度不包括葉?結點(失敗結點)

最??度——讓各層的分叉盡可能的少

n個關鍵字的B樹必有n+1個葉?結點

B樹的插入刪除

對于這里的知識點的話,我們只要求處理手算實現,具體的代碼實現我們不要求,在考試中應該也不會涉及得到。

接下來我們從頭開始建立一棵樹

這里超出來了

在插?key后,若導致原結點關鍵字數超過上限,則從中間位置( ?m/2?)將其中的關鍵字分為兩部分,左部分包含的關鍵字放在原結點中,右部分包含的關鍵字放到新結點中,中間位置( ?m/2?)的結點插?原結點的?結點

新元素?定是插?到最底層“終端節點”,?“查找”來確定插?位置

第二層節點也已經滿了

其實B樹的插入就一句話總結,

核?要求:
①對m階B樹——除根節點外,結點關鍵字個數≤n≤m-1
②?樹0<關鍵字1<?樹1<關鍵字2<?樹2<….

記住m階B樹的性質節點最多m-1個關鍵子(最少二分之m向上取整減一,最少二分之m向上取整個子樹,最多m個子樹)

簡言之就是符合B樹的定義然后向上拱中間的元素就好。

B樹的刪除

若被刪除關鍵字在終端節點,則直接刪除該關鍵字(要注意節點關鍵字個數是否低于下限 ?m/2? ? 1)刪除了60

刪除了80

若被刪除關鍵字在?終端節點,則?直接前驅或直接后繼來替代被刪除的關鍵字
直接前驅:當前關鍵字左側指針所指?樹中“最右下”的元素

接下來采取采用直接后繼代替的方式

接下來刪除了節點77

若被刪除關鍵字在?終端節點,則?直接前驅或直接后繼來替代被刪除的關鍵字
直接前驅:當前關鍵字左側指針所指?樹中“最右下”的元素
直接后繼:當前關鍵字右側指針所指?樹中“最左下”的元素

右孩子寬裕

若是刪除38則不滿住B樹的定義了節點關鍵字少于2(?m/2? ?1)個了

兄弟夠借。若被刪除關鍵字所在結點刪除前的關鍵字個數低于下限,且與此結點右(或左)兄弟結
點的關鍵字個數還很寬裕,則需要調整該結點、右(或左)兄弟結點及其雙親結點(??換位法)

這里刪除了38需要將49部位下來滿足最低m-1向上取整減一個個元素此處需要最低2個元素。

49落下來以后第二層元素也就少了一個也不滿足此時就需要從孩子節點選一個后繼來不即右下結點的第一個元素也就是70

說?了,當右兄弟很寬裕時,?當前結點的后繼、后繼的后繼 來填補空缺

接下來刪除90這里是針對于左孩子寬裕的情況。

當左兄弟很寬裕時,?當前結點的前驅、前驅的前驅 來填補空缺

直接前驅是左子樹的最右下角元素

直接后繼是右子樹的最左下角元素

兄弟不夠借。

對于兄弟不夠借就涉及到了一個問題就是合并的問題,這里需要注意一下B樹的另外一個性質就是樹高相同。

若被刪除關鍵字所在結點刪除前的關鍵字個數低于下限,且此時與該結點相鄰的左、右兄弟結點的關鍵字個數均=?m/2? ? 1,則將關鍵字刪除后與左(或右)兄弟結點及雙親結點中的關鍵字進?合并

接下來刪除49

刪除49以后最下面一層不夠元素(m/2向上取整減一個元素)

注意一下這里的動態過程25 70 71 72需要先合并成一個元素

然后第二層就只剩下了73也不符合且沒有借的地方,此時就需要再一次的合并,合并73 80 87 93

就是這樣的

為什么這里合并25 70 71 72后不向74 75 76借元素呢?

因為只能同借元素,你現在如果要向 74 75 76借元素的話就是跑向下層借了這是不允許的。所以只能再次向上層元素合并了。

這些就是B樹的刪除操作,最麻煩的就是不夠借的情況,記住不夠借就合并一定不可以向下面的元素借。

接下來介紹一下B+樹

B+樹

?棵m階的B+樹需滿?下列條件:
1)每個分?結點最多有m棵?樹(孩?結點)。
2)?葉根結點?少有兩棵?樹,其他每個分?結點?少有 棵?樹。
3)結點的?樹個數與關鍵字個數相等。
4)所有葉結點包含全部關鍵字及指向相應記錄的指針,葉結點中將關鍵字按??順序排列,并且相鄰葉結點按??順序相互鏈接起來。
5)所有分?結點中僅包含它的各個?結點中關鍵字的最?值及指向其?結點的指針。(聯系一下索引的概念)

其實簡述一下就是一顆B樹但是終端節點下面連接的是一條條記錄同時,所有元素都存在于總端,允許非終端節點存在終端元素值,且分支節點包含子節點的最大值及其指針。

允許按照鏈表來查找也支持索引查找

索引查找其實揉合了B樹查找和索引的方法。

B+樹的查找一定要到終端節點里面去,而B樹就可以停在半路。這是由于B樹不允許節點中關鍵字重復。

接下來對比一下

因為B+樹是直接連接子樹,而B樹是通過區域鏈接這就導致了B樹多一個

因為B+樹是直接連接子樹,而B樹是通過區域鏈接這就導致了B樹多一個,如果B樹不減一的話就會不滿足定義會變成M+1叉B樹

!!!!!!!!!!!!!最后聲明一下B樹以及B+樹的內容看到不懂得情況可以戰略性放棄。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/88895.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/88895.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/88895.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【版本控制】Perforce Helix Core (P4V) 完全入門指南(含虛幻引擎實戰)

目錄引言第一章&#xff1a;認識 Perforce Helix Core1.1 什么是 Perforce&#xff1f;1.2 P4V 是什么&#xff1f;1.3 核心概念速覽1.4 為什么選擇 Perforce&#xff1f;1.5 與 Git 的核心區別本章總結第二章&#xff1a;安裝與配置2.1 安裝原則&#xff1a;先服務端后客戶端2…

LlamaFactory/unsloth Demo

內部叫Tuning-Factory 參數文檔https://llamafactory.readthedocs.io/zh-cn/latest/index.html 高級技巧&#xff0c;如加速&#xff1a;https://llamafactory.readthedocs.io/zh-cn/latest/advanced/acceleration.html 0.環境 conda env list conda remove --name llm --all c…

水務工程中自動化應用:EtherNet/IP轉PROFIBUS DP連接超聲波流量計

在水務工程領域&#xff0c;自動化技術的應用愈發廣泛。隨著工業4.0概念的普及&#xff0c;不同通信協議的設備之間實現高效互聯互通變得尤為關鍵。EtherNet/IP和PROFIBUS DP作為兩種常見的工業通信協議&#xff0c;各有優勢&#xff0c;在實際應用中&#xff0c;常需要將它們進…

網絡協議和基礎通信原理

網絡協議和基礎通信原理是理解互聯網和各種網絡應用的關鍵。讓我用通俗易懂的方式&#xff0c;帶你逐一深入講解這些內容。 一、基礎概念總覽 TCP/IP協議族&#xff1a;互聯網通信的基礎&#xff0c;由一組協議組成&#xff0c;包括TCP、IP、UDP等。HTTP協議&#xff1a;基于T…

T16IZ遙控器教程__遙控器與無人機對頻

文章目錄前言一、準備設備二、對頻步驟總結前言 在使用自組PX4無人機時&#xff0c;有的小伙伴可能會遇到遙控器無法與無人機對頻連接的問題&#xff0c;別擔心&#xff0c;這篇文章會解決它。 一、準備設備 如下圖&#xff0c;無人機信號接收器&#xff0c;與無人機。 遙控器…

pyspark中map算子和flatmap算子

在 PySpark 中&#xff0c;map 和 flatMap 是兩個常用的轉換算子&#xff0c;它們都用于對 RDD&#xff08;彈性分布式數據集&#xff09;或 DataFrame 中的元素進行處理&#xff0c;但處理方式和應用場景有所不同。下面詳細講解它們的用法和適用場景。1. map 算子功能對 RDD 或…

jenkins部署前端vue項目使用Docker+Jenkinsfile方式

文章目錄前言一、前提準備二、準備構建文件三、Jenkins中構建項目總結前言 前面通過jenkinsdocker的方式部署了若依前端vue項目&#xff0c;接下來接著學習使用Jenkinsfile的方式部署前端vue項目。 一、前提準備 已經安裝好centos服務器&#xff0c;并且安裝了jenkins和docke…

Cadence操作說明

一.allegro修改絲印字體大小的方法 1.選擇Edit–>Change&#xff0c;右側彈出Options選項&#xff0c;選擇Class : New subclass Ref Des : Silkscreen_Top&#xff0c;設置Text block&#xff0c;后面的數字代表字號的大小。菜單菜單欄選擇Setup–>Design Parameters&a…

使用Stitch來生成CrypyTrack的app程序

結果&#xff1a; &#x1f9ed; 第一步&#xff1a;訪問 Stitch 平臺 打開網址&#xff1a;stitch.withgoogle.com使用你的 Google 賬號登錄&#xff0c;無需安裝任何軟件 &#x1f9f1; 第二步&#xff1a;選擇設計模式 Stitch 提供兩種模式&#xff1a; 標準模式&#xf…

告別繁瑣:API全生命周期管理的新范式——apiSQL

API&#xff08;應用程序接口&#xff09;是連接數據與服務的生命線&#xff0c;是數字世界的基石。然而&#xff0c;一個高質量API的誕生并非易事&#xff0c;它涉及一個漫長而復雜的全生命周期——從規劃設計到最終退役&#xff0c;每個環節都需要專門的工具和技能&#xff0…

R 語言科研繪圖第 64 期 --- 啞鈴圖

在發表科研論文的過程中&#xff0c;科研繪圖是必不可少的&#xff0c;一張好看的圖形會是文章很大的加分項。 為了便于使用&#xff0c;本系列文章介紹的所有繪圖都已收錄到了 sciRplot 項目中&#xff0c;獲取方式&#xff1a; R 語言科研繪圖模板 --- sciRplothttps://mp.…

基于MaxCompute MaxFrame 汽車自動駕駛數據預處理最佳實踐

一、背景及挑戰在汽車自動駕駛場景中&#xff0c;車端&#xff08;量產車、研采車&#xff09;持續產生并采集海量數據&#xff0c;包括圖片、音視頻、雷達、GPS等內容&#xff0c;這些數據通常以 ROSbag文件形式進行存儲。行業需求&#xff1a;自動駕駛依賴海量多模態數據&…

NLP:RNN文本生成案例分享

本文目錄&#xff1a;一、導入工具包二、數據集三、 構建詞表四、 構建數據集對象五、 構建網絡模型六、 構建訓練函數七、構建預測函數前言&#xff1a;上篇文章講解了RNN&#xff0c;這篇文章分享文本生成任務案例&#xff1a;文本生成是一種常見的自然語言處理任務&#xff…

AI時代的接口自動化優化實踐:如何突破Postman的局限性

編者語&#xff1a;本文作者為某非銀金融測試團隊負責人。其團隊自 2024 年起局部試用 Apipost&#xff0c;目前已在全團隊正式投入使用 。在推進微服務 API 自動化測試的過程中&#xff0c;研發和測試人員常常需要在接口請求中動態構造帶有特定業務規則的數據。我們團隊就遇到…

動態規劃題解_將一個數字表示成冪的和的方案數【LeetCode】

2787. 將一個數字表示成冪的和的方案數 給你兩個正整數 n 和 x 。 請你返回將 n 表示成一些 互不相同 正整數的 x 次冪之和的方案數。換句話說&#xff0c;你需要返回互不相同整數 [n1, n2, ..., nk] 的集合數目&#xff0c;滿足 n n1x n2x ... nkx 。 由于答案可能非常…

C#常用的LinQ方法

LINQ&#xff08;Language Integrated Query&#xff09;是 .NET 中用于處理集合的強大工具&#xff0c;它提供了多種方法來簡化數據查詢和操作。以下是一些常用的 LINQ 方法及其功能&#xff1a;Where: 根據指定的條件篩選集合中的元素。var filteredResults matchResults.Wh…

目標檢測之數據增強

數據翻轉&#xff0c;需要把bbox相應的坐標值也進行交換代碼&#xff1a;import random from torchvision.transforms import functional as Fclass Compose(object):"""組合多個transform函數"""def __init__(self, transforms):self.transform…

DiffDet4SAR——首次將擴散模型用于SAR圖像目標檢測,來自2024 GRSL(ESI高被引1%論文)

一. 論文摘要 合成孔徑雷達&#xff08;SAR&#xff09;圖像中的飛機目標檢測是一項具有挑戰性的任務&#xff0c;由于離散的散射點和嚴重的背景雜波干擾。目前&#xff0c;基于卷積或基于變換的方法不能充分解決這些問題。 本文首次探討了SAR圖像飛機目標檢測的擴散模型&#…

html案例:編寫一個用于發布CSDN文章時,生成有關縮略圖

CSDN博客文章縮略圖生成器起因&#xff1a;之前注意到CSDN可以隨機選取文章縮略圖&#xff0c;但后來這個功能似乎取消了。于是我想調整一下縮略圖的配色方案。html制作界面 界面分上下兩塊區域&#xff0c;上面是參數配置&#xff0c;下面是效果預覽圖。參數配置&#xff1a; …

lightgbm算法學習

主要組件 Boosting #mermaid-svg-1fiqPsJfErv6AV82 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-1fiqPsJfErv6AV82 .error-icon{fill:#552222;}#mermaid-svg-1fiqPsJfErv6AV82 .error-text{fill:#552222;stroke:#…