數據結構與算法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)
歡迎關注本站公眾號,獲取更多信息