樹表查找(持續更新,暫時有項目,過幾天再補,求諒解!!)

前言

  • 先附上前面的查找算法和理解
  • 哈希查找:哈希相關知識
  • 常見的五種查找算法:常見查找算法
  • 樹表查找的知識在數據結構中有講的很多了,它主要用於動態查找。
  • 因爲有項目,對二叉查找樹進行優化的樹過幾天再寫,也是寫到這篇文章裏,反正我這也沒人看。。。持續更新!!

二叉查找樹(Binary Search Tree)

定義

  • 也叫二叉排序樹和二叉搜索樹。
  • 左子樹永遠小於它的根結點,右子樹永遠的大於它的根結點,同時左子樹和右子樹也滿足二叉查找樹的定義。
  • 沒有相等的鍵值。

性質

  • 中序遍歷時產生有序數組。
  • 時間複雜度:在插入和查找時時間複雜度均爲O(logn),二叉查找樹目的是在最壞的情況下也有較好的時間複雜度。

操作

  • 查找:對樹遍歷唄,一般用BFS廣度優先查找,對二叉查找樹來說,每次比較都等於剪掉一般的樹,從根節點開始,如果目標大於根結點就進右子樹,目標小於根結點就進左子樹,所以類似二分查找,在查找時達到O(logn)的時間複雜度。
  • 插入:和查找操作一樣的,也是把目標和根結點比較,大了就進右子樹,小了就進左子樹,找到位置對應插入就行了。
  • 刪除:分三種情況:
    • 刪除葉子結點:刪了就刪了,直接找到它刪掉就完事了。
    • 刪除有一個子結點的結點:把它和它的子節點的位置換一下,刪掉就行了。
    • 刪除有兩個子節點的結點(可能有子樹):用中序遍歷找到目標的後繼節點,也就是在中序遍歷產生的順序表中目標的下一個元素,把它和目標換個位置,然後刪掉就行了。

拓展

  • 二叉查找樹是基礎,對它進行優化產生了AVL樹,紅黑樹和平衡二叉樹,還有什麼2-3查找樹啥的,再拓展就是數據庫的B樹和B+樹。
  • 過幾天就更新樹!!!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章