1. 程式人生 > >二叉排序樹、平衡二叉樹、B-樹

二叉排序樹、平衡二叉樹、B-樹

二叉排序樹(BST)

  • 刪除關鍵字操作
    • 1)p結點為葉子節點
      • 直接刪除
    • 2)p節點只有左子樹和右子樹
      • 刪除p節點,把唯一的子樹掛在原節點位置上
    • 3)p節點既有左子樹又有右子樹
      • 沿著左子樹右節點找到左子樹最大關鍵位元組點 r ,或沿著右子樹左節點找出右子樹最小關鍵位元組點 r 。把節點 r 中關鍵字與 p 中關鍵字進行替換,在按1)或2)刪除節點 r

平衡二叉樹(AVL)

  1. 平衡因子:某結點的左子樹與右子樹的高度(深度)差即為該結點的平衡因子(BF,Balance Factor)。
  2. 平衡二叉樹上所有結點的平衡因子只可能是 -1,0 或 1。
  3. 平衡二叉樹思想
  4. 旋轉操作:
    - 單向左旋平衡處理、單向右旋平衡處理:對平衡因子不為0、1、-1的結點進行旋轉操作
    - 雙向(先左後右、先右後左)旋轉平衡處理:先對對平衡因子不為0、1、-1的結點的左子樹或右子樹進行旋轉操作,再對結點本身做旋轉操作。
    - 例:插入55,12,24,47,30,68,19
    插入55,12,24,47,30,68,19

B-樹

  • 是一種多路搜尋樹

  • 由於M/2(向上取整)的限制,在插入結點時,如果結點已滿,需要將結點分裂為兩個各佔M/2(向上取整)的結點;刪除結點時,需將兩個不足M/2(向上取整)的兄弟結點合併。
    這裡寫圖片描述