每個節點最多有2個節點的樹;
每個非葉節點都包含非空的左右子樹
所有的葉子節點都位於同一級。
二叉樹的基礎上滿足如下特性則為二叉排序樹;
在二叉搜尋樹中搜尋變得非常有效,因為我們在每一步都得到了提示,即哪個子樹包含所需的元素。
與陣列和鍊錶相比,二進位制搜尋樹被認為是有效的資料結構。
在搜尋過程中,它會在每個步驟中刪除一半的子樹。
在二叉搜尋樹中搜尋元素需要o(log
2n)時間。
在最壞的情況下,搜尋元素所需的時間為0(n)。
與陣列和鍊錶中的插入和刪除操作相比,它還加快了插入和刪除操作的速度。
所有節點的左右子樹的高度差小於1的二叉排序樹;
b樹出現是因為磁碟io。io操作的效率很低,那麼,當在大量資料儲存中,查詢時我們不能一下子將所有資料載入到記憶體中,只能逐一載入磁碟頁,每個磁碟頁對應樹的節點。造成大量磁碟io操作(最壞情況下為樹的高度)。平衡二叉樹由於樹深度過大而造成磁碟io讀寫過於頻繁,進而導致效率低下。
所以,我們為了減少磁碟io的次數,就你必須降低樹的深度,將「瘦高」的樹變得「矮胖」。
b 樹又叫平衡多路查詢樹。一棵m階的b 樹 (m叉樹)的特性如下:
根節點必須至少含有2個節點。
除了根節點和葉節點之外,b樹中的每個節點至少包含m / 2個子節點。
b樹中的每個節點最多包含m個子節點
所有葉節點必須處於同一級別。
下圖顯示了4階ab樹。
b +樹是b樹的擴充套件,它允許有效的插入,刪除和搜尋操作。
在b樹中,鍵和記錄都可以儲存在內部節點和葉節點中。
而在b +樹中,記錄(資料)只能儲存在葉節點上,而內部節點只能儲存鍵值。
b +樹的葉節點以單鏈結列表的形式鏈結在一起,以使搜尋查詢更高效。
b +樹用於儲存無法儲存在主儲存器中的大量資料。
由於總是限制主儲存器的大小,因此b +樹的內部節點(訪問記錄的鍵)儲存在主儲存器中,而葉節點儲存在輔助儲存器中。
b +樹的內部節點通常稱為索引節點。
下圖顯示了3級的b +樹。
可以以相同數量的磁碟訪問來獲取記錄。
與b樹相比,樹的高度保持平衡並且較小。
我們可以依次或直接訪問儲存在b +樹中的資料。
鍵用於索引。
由於資料僅儲存在葉節點上,因此搜尋查詢速度更快。
snb樹
b +樹
1個搜尋鍵不能重複儲存。
可能存在冗餘搜尋鍵。
2資料可以儲存在葉節點以及內部節點中
資料只能儲存在葉節點上。
3搜尋一些資料的過程較慢,因為可以在內部節點以及葉節點上找到資料。
由於只能在葉節點上找到資料,因此搜尋相對較快。
4內部節點的刪除是如此複雜且耗時。
刪除絕不會是乙個複雜的過程,因為元素總是會從葉節點中刪除。
5葉節點不能鏈結在一起。
葉節點鏈結在一起,使搜尋操作更高效。
紅黑樹是一棵二叉搜尋樹,它在每個節點上增加了乙個儲存位來表示節點的顏色,可以是red或black。
通過對任意一條從根到葉子的簡單路徑上各個節點的顏色進行約束,紅黑樹確保沒有一條路徑會比其他路徑長出2倍,因而是近似平衡的。
每個節點要麼是紅色,要麼是黑色。
根節點是黑色。
葉子節點是黑色。
相鄰的兩個節點不能同時位紅色。
任意節點到其所有後代葉子節點的路徑上,都包含相同數目的黑色節點。
插入的節點一定是紅色。
從某個節點x出發(不含該節點)到達乙個葉節點的任意一條簡單路徑上的黑色節點個數成為該節點的黑高;
(以上如有錯誤或理解不到位地方歡迎指正)
樹的基本概念
樹的遞迴定義如下 單個結點是一棵樹,樹根就是該結點本身。設t1,t2,tk是樹,它們的根結點分別為n1,n2,nk。用乙個新結點n作為n1,n2,nk的父親,則得到一棵新樹,結點n就是新樹的根。我們稱n1,n2,nk為一組兄弟結點,它們都是結點n的子結點。我們還稱t1,t2,tk為結點n的子樹。空集...
樹的基本概念
邏輯非線性結構 資料和資料之間是1 m 若某個節點有後繼,則後繼節點可以是多個 若某個節點有前驅,則前驅節點只能是乙個 可以把節點分成前驅節點和後繼節點 節點的度 若a節點有m個子節點,則節點a的度是m 樹的度 樹中節點最大的度 度為n,高度為h的樹中,最多有多少個節點?1 n n 2 n 3 n ...
樹的基本概念
樹是n n 0 個結點的有限集。n 0時稱為空樹。在任意一課非空樹中 1 有且僅有乙個特定的稱為根的結點 2 當n 1時,其餘結點可分為m m 0 個互不相交的有限集t1 t2 tm,其中每乙個集合本身又是一棵樹,並且稱為根的子樹。注意點樹的結點包含乙個資料元素及若干指向其子樹的分支。結點擁有的子樹...