圖說各個樹的優缺點

前言

  • 數據結構的實現有兩種方式,一種是順序存儲,一種是鏈式存儲

順序存儲:使用一片連續的邏輯地址存放數據
鏈式存儲:不用連續地址,使用指針指向下個元素的地址html

  • 經常使用數據結構有:線性表,棧,隊列,樹,圖等等,二叉樹是屬於這裏面的樹。

BST(Binary Search Tree)介紹

BST 是一種樹,他的特性是
1.子樹上全部結點的值均小於或等於它的根結點的值。
2.子樹上全部結點的值均大於或等於它的根結點的值。
3.左、右子樹也分別爲BSTnode

BST的優勢:

  • BST 一般是使用鏈式結構存儲實現的,使用順序存儲要麼是(Full Binary Tree)或者接近(Full Binary Tree)
  • 順序存儲最大的弊端是必須預先給出數組的存儲空間大小插入刪除比較麻煩,優勢是能夠節省空間,查找很快

BST的缺點:

  • 拋開順序存儲和鏈式存儲,BST數據結構自己存在的缺點是,在特定的時候,樹的度會一直升高,致使查找效率變低

圖一.png

這個時候咱們就有新的樹來解決他的缺點就是(AVL Tree)數組

AVL Tree

AVL樹,本質上是帶了平衡功能的BST,他多了個平衡因子概念
即(每一個結點的左右子樹的高度之差的絕對值(平衡因子)最多爲1),若是不知足就會旋轉來知足這個條件。
上面圖一BST 在avl中旋轉操做後獲得以下,具體怎麼旋轉的能夠在這個網站本身模擬
https://www.cs.usfca.edu/~gal...
圖二.png
那麼AVL 有沒有什麼缺點呢?
最大的缺點就是追求完美的平衡致使插入和刪除須要大量的平衡計算,這個在插入和刪除大的狀況致使開銷較大,這個時候咱們就想着,有沒有一種樹,解決BST的缺點,同時又不要大量的計算平衡,因而RB-Tree就被髮明瞭數據結構

RB-Tree 和 AVL 區別

  • RB-Tree 的定義不介紹了,咱們記得這個區別就行

    刪除node引發樹的不平衡時,最壞狀況下,AVL須要維護從被刪node到root這條路徑上全部node的平衡性,而RB-Tree最多隻需3次旋轉。網站

    下圖是解決圖一不平衡RB-Tree的圖
    image.pngspa

相關文章
相關標籤/搜索