二叉查詢樹

2021-09-06 09:39:47 字數 1118 閱讀 8702

每個節點最多只有兩個子樹的樹結構,通常子樹被稱為左子樹或者右子樹,二叉查詢樹的重要性質是:對於樹中的每個節點x,左子樹任意節點的值都小於x ,右子樹任意節點的值均大於x。注意:索引的儲存塊和之前說的資料庫最小儲存單位塊或者頁實際上並非一一對應,只是為了方便我們的理解將其一一對應起來。索引的每個儲存塊儲存的是關鍵字+指向子樹的指標,像下圖中的樹,不僅僅是二叉樹還是平衡二叉樹。

什麼是平衡二叉樹:它是一 棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹。查詢元素的時候使用二分查詢,所以查詢的速度很快,不過還是有缺點的:首先我們的資料庫會面臨資料的增加或者刪除。

又叫做平衡多路查詢樹,如果每個節點最多有m個孩子,那麼這樣的樹就叫做m階b-tree樹,如下圖就是乙個3階b樹,每個儲存塊中都包含了關鍵字和指向孩子的指標,最多有幾個孩子取決於儲存塊的容量以及資料庫的相關配置,所以通常情況下這個m是很大的

定義:最後乙個約束如下:

b+樹是b樹的變體,其定義基本與b樹相同,除了:

b+-tree更適合用來做儲存索引

b+-tree的內部結構,並沒有指向關鍵字的具體資訊指標,也就是說不存放資料,只存放索引資訊,因此其內部節點相對於b-tree來說更小,如果把所有同一內部關鍵字存放在同一盤塊中,這個盤塊所能容納的關鍵字數量也越多,一次性讀入到記憶體中的需要查詢的關鍵字也就越多,相對來說io讀寫次數也就降低了

由於內部節點並不是最終指向檔案內容的節點,而只是葉子節點中關鍵字的索引,所以任何關鍵字的查詢必須走一條從根節點到葉子節點的路,所有關鍵字查詢的長度相同,導致每乙個資料查詢效率也幾乎是相同的,穩定的複雜度

b+樹只需要遍歷葉子節點就可以解決對全部關鍵字的掃瞄,所以對資料庫中頻繁的使用範圍查詢

二叉樹 二叉查詢樹

構建二叉樹,判斷是否為二叉查詢樹,遞迴先序遍歷,非遞迴中序遍歷 include include include include using namespace std 二叉樹結點 struct treenode 鍊錶結點 struct listnode struct tempnodetempnode...

二叉樹 二叉查詢樹

二叉樹 binary tree 一種樹型結構,每個節點最多擁有兩個節點。如下圖 幾種型別的二叉樹 1.full binary tree 每個節點的孩子數 是 0 或者 2.對高度沒有要求。如下圖 2.perfect binary tree 這個就是最完美的樹,顧名思義,所有葉子節點都有相同的深度,並...

樹(樹,二叉樹,二叉查詢樹)

1.定義 n n 0 個結點構成的有限集合。當n 0時,稱為空樹 2.對於任一棵非空樹 n 0 它具備以下性質 1 樹中有乙個稱為 根 root 的特殊結點,用 r 表示 2 其餘結點可分為m m 0 個互不相交的有限集t1,t2,其中每個集合本身又是一棵樹,稱為原來樹的子樹。3.樹的一些性質 1 ...