二叉樹,B樹,B+樹,紅黑樹 簡介


 

什么是二叉樹?

在計算機科學中,二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱作“左子樹”和“右子樹”,左子樹和右子樹同時也是二叉樹。二叉樹的子樹有左右之分,並且次序不能任意顛倒。二叉樹是遞歸定義的,所以一般二叉樹的相關題目也都可以使用遞歸的思想來解決,當然也有一些可以使用非遞歸的思想解決,我下面列出的一些算法有些采用了遞歸,有些是非遞歸的。

什么是二叉排序樹?

二叉排序樹又叫二叉查找樹或者二叉搜索樹,它首先是一個二叉樹,而且必須滿足下面的條件:

1)若左子樹不空,則左子樹上所有結點的值均小於它的根節點的值;

2)若右子樹不空,則右子樹上所有結點的值均大於它的根結點的值

3)左、右子樹也分別為二叉排序樹

4)沒有鍵值相等的節點(?可能是因為不好處理鍵值相等的節點到底是左節點還是右節點吧)

 

先序遍歷 (根 左 右)

先訪問根,再遍歷左子樹,再遍歷右子樹。典型的遞歸思想。

 

中序遍歷(左 根 右)

先遍歷左子樹,再訪問根,再遍歷右子樹。

對於二叉排序樹來說,中序遍歷得到的序列是一個從小到大排序好的序列。

 

后序遍歷 (左 右 根)

先遍歷左子樹,再遍歷右子樹,再訪問根

 

B樹、B+樹

參考: https://www.cnblogs.com/vincently/p/4526560.html

小結:

B-Tree它能夠存儲數據、對其進行排序並允許以O(log n)的時間復雜度運行進行查找、順序讀取、插入和刪除的數據結構

Mysql 數據庫的存儲結構就是B-Tree 和B+ Tree

B樹是2-3樹的一種擴展,他允許一個節點有多於2個的元素。

B樹的插入及平衡化操作和2-3樹很相似

2-3樹介紹:

2-3樹是最簡單的B-樹(或-樹)結構,其每個非葉節點都有兩個或三個子女,而且所有葉都在統一層上。2-3樹不是二叉樹,其節點可擁有3個孩子。不過,2-3樹與滿二叉樹相似。若某棵2-3樹不包含3-節點,則看上去像滿二叉樹,其所有內部節點都可有兩個孩子,所有的葉子都在同一級別。另一方面,2-3樹的一個內部節點確實有3個孩子,故比相同高度的滿二叉樹的節點更多。高為h的2-3樹包含的節點數大於等於高度為h的滿二叉樹的節點數,即至少有2^h-1個節點。換一個角度分析,包含n的節點的2-3樹的高度不大於[log2(n+1)](即包含n個節點的二叉樹的最小高度)。  
例如,下圖顯示高度為3的2-3樹。包含兩個孩子的節點稱為2-節點,二叉樹中的節點都是2-節點;包含三個孩子的節點稱為3-節點。
將數據項放入2-3樹節點中的規則是:
(1)2-節點有兩個孩子,必含一個數據項,其查找關鍵字大於左孩子的查找關鍵字,而小於右孩子的查找關鍵字。
(2)3-節點有三個孩子 ,必含兩個數據項,其查找關鍵字S和L滿足下列關系:S大於左孩子的查找關鍵字,而小於中孩子的查找關鍵字;L大於中孩子的查找關鍵字,而小於右孩子的查找關鍵字。
(3)葉子可以包含一個或兩個數據項。

 

由於B+樹的數據都存儲在葉子結點中,分支結點均為索引,方便掃庫,只需要掃一遍葉子結點即可,

但是B樹因為其分支結點同樣存儲着數據,我們要找到具體的數據,需要進行一次中序遍歷按序來掃,

所以B+樹更加適合在區間查詢的情況,所以通常B+樹用於數據庫索引,而B樹則常用於文件索引。

 

紅黑樹:

參考: https://www.cnblogs.com/CarpenterLee/p/5503882.html

小結:

紅黑樹是一種近似平衡的二叉查找樹,它能夠確保任何一個節點的左右子樹的高度差不會超過二者中較低那個的一陪。具體來說,紅黑樹是滿足如下條件的二叉查找樹(binary search tree):

  1. 每個節點要么是紅色,要么是黑色。
  2. 根節點必須是黑色
  3. 紅色節點不能連續(也即是,紅色節點的孩子和父親都不能是紅色)。
  4. 對於每個節點,從該點至null(樹尾端)的任何路徑,都含有相同個數的黑色節點。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM