資料結構和演算法學習(10) 2 3 4樹

2021-07-08 10:20:01 字數 1468 閱讀 1770

之前所提到的樹全部都是二叉樹,即每個節點有乙個資料項,每個節點最多有兩個子節點。

有多個資料項和更多子節點的樹被稱作多叉樹,所要學習的2-3-4樹就是一種多叉樹,他的每個節點最多有四個子節點和三個資料項。

2-3-4樹同紅黑樹一樣是平衡樹,他的效率稍差,但是程式設計更加容易

2-3-4樹名字中的2、3、4的含義指的是每個節點可能含有的子節點的個數

對於非葉結點有三種情況:

也就是說,非葉結點的子節點數總是比他含有的資料項多1。

在二叉樹中,節點最多有兩個子節點的連線,而且可以只有乙個連線;

而在2-3-4樹中,不允許只有乙個連線,有乙個資料項的節點必須總是保有兩個鏈結,除非他是葉結點,這種情況下可以沒有連線

下圖說明了2-3-4樹中鏈與資料項關鍵字值之間的關係

查詢特定關鍵字的資料項和在二叉樹中搜尋過程類似,從跟開始,除非查詢的關鍵字就是根,否則選擇關鍵字值所在的核實範圍,轉向那個方向,直到查到為止

新的資料項總是插在葉結點裡,在樹的最底層

如果插入到有子節點的節點裡,子節點的編號就要發生變化來保證樹的結構

2-3-4樹中插入節點有時比較簡單,有時相當複雜,但是無論哪種情況都是從查詢適當的葉結點開始。

如圖所示插入資料項18:

如果往下尋找要插入位置的過程中,節點已經滿了,插入就變得複雜。

發生這種情況的話,節點就要**來保證樹的平衡,如下圖所示

還有一種更為特殊的情況,即一開始插入式就碰到滿的根,如下圖所示

通俗來講三條規則:

如圖

分析2-3-4樹的效率比紅黑樹要難,所以要從兩者的等價性開始分析

紅黑樹的層數大概是log2(n+1),所以搜尋時間與層數成正比

相同的資料而言,2-3-4樹比紅黑樹的層數要少

2-3-4樹每個節點最多可以有4個子節點,如果每個節點都是滿的,樹的高度應該和log4n成正比,所以在這種情況下2-3-4樹的高度大概是紅黑樹的一半

不過這種情況幾乎不可能發生,所以2-3-4樹的高度大致在log2(n+1)和log2(n+1)/2之間

但是由於每個節點的資料項也會增加,同樣會增加查詢時間,所以大致算來2-3-4樹中增加的每個節點的資料項數量可以抵償樹的高度的減少,所以2-3-4樹中的查詢時間與平衡二叉樹大致相等,都是o(logn)

資料結構和演算法學習 棧

棧是一種重要的線性結構,可以說是線性表的一種具體形式 官方定義 棧是乙個後進先出的線性表,它要求只在表尾進行刪除和插入操作 棧是一種特殊的線性表 順序表 鍊錶 操作上有一些特殊要求 1.棧的元素必須 後進先出 2.棧的操作只能在這個線性表的表尾進行。注 對於棧來說,表尾稱為棧的棧頂 top 相應的表...

資料結構和演算法學習重點

1 資料結構是指一組資料的儲存結構 2 演算法就是運算元據的方法 3 資料結構和演算法是相輔相成的,資料結構是為演算法服務的,而演算法要作用在特定的資料結構之上。資料結構和演算法解決的是如何更省 更快地儲存和處理資料的問題,因此,我們就需要乙個考量效率和資源消耗的方法,這就是複雜度分析方法。在學習資...

資料結構和演算法學習筆記

資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及它們之間的關係和操作等相關問題的學科。程式設計 資料結構 演算法 簡單來說資料結構就是關係,元素相互之間存在的一種或多種特定關係的集合。1.1 邏輯結構和物理結構 演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條...