二叉樹(包含紅黑樹)簡單概念

2021-09-13 18:44:58 字數 3141 閱讀 1297

參考部落格:傳送門

目錄

二叉樹滿二叉樹

完全二叉樹

平衡二叉樹(alv樹) b樹

b+樹紅黑樹(自平衡二叉樹)

1. 左旋

2. 右旋  新增

刪除二叉樹性質

一般二叉樹性質

完全二叉樹性質

是樹的特殊一種,具有如下特點:

1、每個結點最多有兩顆子樹,結點的度最大為2

2、左子樹和右子樹是有順序的,次序不能顛倒。

3、即使某結點只有乙個子樹,也要區分左右子樹

所有的分支結點都存在左子樹和右子樹,並且所有的葉子結點都在同一層上,這樣就是滿二叉樹。就是完美圓滿的意思,關鍵在於樹的平衡。

根據滿二叉樹的定義,得到其特點為:

葉子只能出現在最下一層。

非葉子結點度一定是2.

在同樣深度的二叉樹中,滿二叉樹的結點個數最多,葉子樹最多。

對一棵具有n個結點的二叉樹按層序排號,如果編號為i的結點與同樣深度的滿二叉樹編號為i結點在二叉樹中位置完全相同,就是完全二叉樹。滿二叉樹必須是完全二叉樹,反過來不一定成立。

結合完全二叉樹定義得到其特點:

葉子結點只能出現在最下一層(滿二叉樹繼承而來)

最下層葉子結點一定集中在左 部連續位置。

倒數第二層,如有葉子節點,一定出現在右部連續位置。

同樣結點樹的二叉樹,完全二叉樹的深度最小(滿二叉樹也是對的)。

其左右子樹的高度只差的絕對值不超過1,且其子樹也都是平衡二叉樹

b樹中所有結點的孩子結點最大值稱為b樹的階,通常用m表示。

特徵

根節點至少有兩個孩子

每個中間節點都包含k-1個元素和k個孩子,其中ceil(m/2) <= k <= m

所有葉子節點位於同一層

每個節點的元素公升序排列

b樹主要用於檔案系統以及部分資料庫索引,例如:mongodb

而大部分關聯式資料庫則使用b+樹做索引,例如:mysql資料庫

乙個m階的b+樹具有如下幾個特徵:

節點的子樹個數和元素數相等,且每個元素只用來索引,所有的資料都儲存在葉子節點

葉子節點的資料順序排列

所有中間節點元素都存在於子節點中,在其元素是最大或最小

b+樹通常有兩個指標,乙個指向根結點,另乙個指向關鍵字最小的葉子結點。

因此,對於b+樹進行查詢兩種運算:

一種是從最小關鍵字起順序查詢

另一種是從根結點開始,進行隨機查詢。

b+樹相比b樹的優勢:

1. 單一節點儲存更多的元素,使得查詢的io次數更少;

2. 所有查詢都要查詢到葉子節點,查詢效能穩定;

3. 所有葉子節點形成有序鍊錶,便於範圍查詢。

特點:

中序遍歷單調不減

根節點是黑色

每個葉子節點(即不存在的空節點)為黑色

每個紅色節點的子節點都是黑色,也就是說葉子節點到根節點不能有兩個連續的紅色節點

每個葉子節點到根節點的黑色節點個數一樣

紅黑樹的時間複雜度為: o(lgn)

首先,將紅黑樹當作一顆二叉查詢樹,將節點插入;

然後,將節點著色為紅色;

最後,通過旋轉和重新著色等方法來修正該樹,使之重新成為一顆紅黑樹。 

首先,將紅黑樹當作一顆二叉查詢樹,將該節點從二叉查詢樹中刪除;

然後,通過"旋轉和重新著色"等一系列來修正該樹,使之重新成為一棵紅黑樹。

1、在非空二叉樹的i層上,至多有2^(i-1)個節點(i>=1)。

2、在深度為k的二叉樹上最多有2^(k-1)個結點(k>=1)。

3、對於任何一棵非空的二叉樹,如果葉節點個數為n0,度數為2的節點個數為n2,則有: n0 = n2 + 1

在一棵二叉樹中,除了葉子結點(度為0)之外,就剩下度為 2(n2) 和 1(n1) 的結點了。則樹的結點總數為t = n0 + n1 + n2;在二叉樹中結點總數為t,而連線數為t-1。所以有:n0 + n1 + n2 - 1 = 2 * n2 + n1;最後得到 n0 = n2 + 1。

具有n個結點的完全二叉樹的深度為log2(n) + 1.

如有錯誤或不合理的地方,敬請指正~

加油!!

二叉樹 紅黑樹

也就是說,二叉排序樹中,左子樹都比節點小,右子樹都比節點大,遞迴定義。根據二叉排序樹這個特點我們可以知道,二叉排序樹的中序遍歷一定是從小到大的,比如上圖,中序遍歷結果是 1 3 4 6 7 8 10 13 14 效能取決於 public class demo public static void m...

紅黑二叉樹

紅黑二叉樹 紅黑二叉樹的基本思想是想用標準的二叉查詢樹 完全由2 結點構成 和一些額外的資訊 替換3 結點 來表述2 3樹。或者說,我們將3 結點表示為由一條左斜的紅色鏈結相 兩個2 結點其中之一是另乙個的左子節點 連的兩個2 結點。這種表示的優點 我們無需修改就可以直接使用標準二叉查詢樹的get ...

二叉排序樹 平衡二叉樹 紅黑樹概念

二叉排序樹 1 如果它左子樹非空,則左子樹上所有元素的值均小於根元素的值 2 如果它右子樹非空,則右子樹上所有元素的值均大於根元素的值 3 左,右子樹本身又各是一棵二叉排序樹 平衡二叉樹 一棵二叉樹中每個結點的左 右子樹的高度至多相差1,則此二叉樹為平衡二叉樹 平衡因子 左子樹高度 右子樹高度 1 ...