二叉查找樹(英語:Binary Search Tree)Wiki
</br>
動畫演示:
-
VisuAlgo
</br>
特點
- 如果任意節點的左子樹不空,則左子樹上所有結點的值均小于它的根結點的值;
- 如果任意節點的右子樹不空,則右子樹上所有結點的值均大于它的根結點的值;
- 任意節點的左、右子樹也分別為二叉查找樹;
- 沒有鍵值相等的節點。
</br>
api及時間復雜度
api | 作用 | 時間復雜度 |
---|---|---|
insert | 插入節點 | O(log n) / O(n) |
find | 查找數據 | O(log n) / O(n) |
find_next | 查找下一個數據 | O(log n) / O(n) |
range_search | 在某范圍內查找數據 | O(log n) / O(n) |
delete | 刪除數據 | O(log n) / O(n) |
</br>
實現
python: gist link
心得
- find是bst的核心,因為所有其他的api都可以通過find實現
</br>