Tree

Tree數據庫

 

星星爲何這麼眇小?那是由於他們把本身放的過高了!數組

 

背景:簡單瞭解二叉樹、平衡樹、紅黑樹、B樹和B+樹之間的特色和差別。性能

1. 二叉排序樹的特色spa

a、樹的左邊節點比根節點小,右邊節點比根節點大;設計

b、左右子樹也都是二叉排序樹;指針

c、可是,在一些特殊狀況下,好比插入數據是有序的,就會發生退化狀況,若有序序列,即二叉排序樹退化成鏈表。blog

圖1. 二叉樹排序

2. 平衡樹索引

圖2. 紅黑樹內存

一、爲了保證樹的平衡,引入了平衡樹。在插入數據的時候,同時調整這棵樹,讓它的節點儘量均勻分佈;

二、紅黑樹就是平衡樹的一種,jdk內置的TreeSet底層就是用的紅黑樹;

三、之因此要保證樹的平衡性,是由於樹的查找性能取決於樹的高度,讓樹儘量平衡,就是爲了下降樹的高度。

3. B樹

a、B樹是一種多路搜索樹,他的每一個節點能夠擁有多餘兩個孩子節點,M路的B樹最多能擁有M個孩子節點;

b、這種多路的設計,能夠進一步下降樹的高度。路數越多,樹的高度越低。若是設計成無限多路,B樹就退化成有序數組了;

c、B樹通常用於文件系統索引,文件系統和數據庫索引通常都存儲在硬盤上的,若是數據量大的話,不必定能一次性加載到內存中;若是一棵樹沒法一次性加載進內存,這時候B樹的多路存儲能力就出來了,能夠每次加載B樹的一個節點,而後一步步往下找;若是在內存中,紅黑樹比B樹效率更高,可是涉及到磁盤操做,B樹就更優了。

圖3. B樹

4. B+樹

B+樹是在B樹的基礎上進行改造,數據都在葉子節點上,同時葉子節點之間還加了指針造成鏈表。

圖4. B+樹

 

 

星星爲何這麼眇小?那是由於他們把本身放的過高了!

相關文章
相關標籤/搜索