數據結構與算法3- 二叉搜索樹

數據結構與算法3- 二叉搜索樹

1. 二叉搜索樹的定義:

  • 二叉搜索樹是一顆二叉樹,能夠爲空。知足如下性質:
    • 非空左子樹的全部鍵值小於其根節點的鍵值
    • 非空右子樹的全部鍵值大於其根節點的鍵值

2. 二叉搜索樹的基本操做:

  • 查找最小值:在樹的最左分支的端節點上
  • 查找最大值:在樹的最右分支的端節點上
  • 查找:
    • S1. 若是搜索樹爲空,返回false
    • S2. 若是樹非空,根節點鍵值與X比較:
      • S2.1 鍵值小於X,則轉向右子樹
      • S2.2 鍵值大於X,則轉向左子樹
      • S2.3 二者相等,搜索完成,返回true
    • 特徵:查找的路徑是一條從根到某一葉節點的路徑
  • 插入節點:
    • 在樹中查找待插入的元素值
      • 若是存在,則放棄操做
      • 若是不存在,則查找終止的位置就是X應該插入的位置
  • 刪除節點:須要考慮3中狀況
    • CASE1. 刪除葉節點:直接刪除,而後修改其父節點中指向子節點的指針爲null
    • CASE2. 刪除只有一個子節點的節點:將該節點的父節點的指針指向子節點
    • CASE3. 刪除有左右子節點的節點:首要目標是保持二叉樹的有序性
      • Solution1. 選取右子樹中的最小元素替代
      • Solution2. 選取左子樹中的最大元素替代
      • 上述兩種元素均最多隻有一個子節點(不然最大/小不成立)
      • 而後再在節點的右/左子樹中刪除交換後的節點(迴歸到CASE1/2)
相關文章
相關標籤/搜索