二元搜尋樹 (Binary Search Tree)

支援高效搜尋、插入、刪除的樹狀資料結構

BST 定義與性質

二元搜尋樹是每個節點最多有兩個子節點的二元樹,滿足:左子樹所有節點的值 ≤ 根節點 ≤ 右子樹所有節點的值。中序走訪可得到有序序列。

基本操作

搜尋:從根開始比較,小於往左,大於往右,時間 O(h),h 為樹高。

插入:找到合適位置後插入新節點,時間 O(h)。

刪除:三種情況——葉節點直接刪、單子節點用子節點取代、雙子節點用後繼節點取代,時間 O(h)。

平衡二元搜尋樹

普通 BST 在極端情況下退化成鏈結串列(O(n)),因此需要平衡機制:

應用場景

資料庫索引(B-tree 為 BST 的推廣)、關聯式容器(C++ map/set、Java TreeMap)、運算式解析、決策樹。

本課程範例

相關連結