記-數據結構與算法-二分搜索樹、平衡二叉樹

二叉搜索樹

定義

一種在有序數組中查找某一特定元素的搜索算法,稱之為二叉查找或者二分查找法。

在樹結構中類似,從中間元素開始查找,對比大小,縮小搜索范圍。

而二叉(分)查找(搜索)樹,

每個節(jié)點的key值大于左子節(jié)點,小于右子節(jié)點,不一定是二叉樹。

借助這個性質,二叉搜索樹不僅可以用來搜索查找數據,還可以高效地插入、刪除數據。

遍歷

二叉樹的前序遍歷、中序遍歷、后序遍歷

添加

遵循插入元素大于中間元素向右支走,小于中間元素左支走,不斷迭代循環(huán)。

刪除

分為三類:

  1. 沒有子類,直接刪除
  2. 有一個子類,目標節(jié)點被刪除,將子節(jié)點移動到已刪除節(jié)點的位置
  3. 有兩個子類,目標節(jié)點被刪除,從刪除節(jié)點的左子樹中找到最大的節(jié)點,將其移到到刪除的節(jié)點的位置
局限

二分搜索樹一旦退化成單鏈表,查找搜索效率和插入刪除效率降低。

平衡二叉樹(AVL樹)

Wiki

在計算機科學中,AVL樹是最早被發(fā)明的自平衡二叉查找樹。在AVL樹中,任一節(jié)點對應的兩棵子樹的最大高度差為1,因此它也被稱為高度平衡樹。查找、插入和刪除在平均和最壞情況下的時間復雜度都是 O(logn)。增加和刪除元素的操作則可能需要借由一次或多次樹旋轉,以實現樹的重新平衡。AVL 樹得名于它的發(fā)明者 G. M. Adelson-Velsky 和 Evgenii Landis。

優(yōu)勢

針對于二叉搜索樹查找效率取決于樹的高度,只要保證樹的高度就可以保證搜索效率。經過研究,當節(jié)點數目一定,保持樹的左右兩端平衡,就是平衡二叉樹。

即要求,任意左右子樹的高度差只能是-1、0、1三個數值,這被稱之為平衡二叉樹。

另外,上面所謂樹的高度差和深度差都可以表述成平衡二叉樹的平衡因子。平衡因子只能取-1、0、1。

AVL樹插入后最小失衡樹與左右旋調整

最小失衡樹:在新插入的節(jié)點向上查找,以第一個平衡因子的絕對值超過 1 的節(jié)點為根的子樹稱為最小不平衡子樹。

失衡調整方法:通過旋轉最小失衡子樹來實現的


失衡調整方法.jpeg
AVL樹刪除節(jié)點

需要重新檢查平衡性并且修正,通過左右旋就能得到。

小結

平衡二叉樹的優(yōu)勢在于當二叉樹退化成單鏈表失衡,固定了樹的高度,保證了查找搜索效率。

但是為了保證平衡性,損失了在動態(tài)插入和刪除的效率

因此需要其他靈活性修改,例如紅黑樹(不是真正的平衡二叉樹,借鑒了思想,理論基礎2-3-4樹等。)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 二叉搜索樹,平衡樹,B,b-,b+,b*,紅黑樹 二叉搜索樹 ? 1.所有非葉子結點至多擁有兩個兒子(Le...
    raincoffee閱讀 4,120評論 3 18
  • 1. 樹的概念 一個樹由節(jié)點組成,這些節(jié)點包含根節(jié)點,父節(jié)點,子節(jié)點,兄弟節(jié)點;沒有任何一個節(jié)點的樹稱為空樹;如果...
    HChase閱讀 6,774評論 0 34
  • 目錄 1、什么是樹 2、相關術語 3、二叉樹 3.1、二叉樹的類型 3.2、二叉樹的性質 3.3、二叉樹的結構 3...
    我哈啊哈啊哈閱讀 2,708評論 0 10
  • 下午一個人點了蜜汁烤雞還有雞腿吃~圖書館因為在預防"登革熱",所以不允許帶食物進去,連水果也禁止了。所以自己是在"...
    風兮_ebc5閱讀 344評論 0 0
  • ■ 諺語寓意翻譯 我只為我說的話負責 而不是你所理解的事 ■ 聽其言、觀其行,一目了然。 ■ 一個坐姿...
    黑貓子閱讀 449評論 0 0

友情鏈接更多精彩內容