支援高效搜尋、插入、刪除的樹狀資料結構
二元搜尋樹是每個節點最多有兩個子節點的二元樹,滿足:左子樹所有節點的值 ≤ 根節點 ≤ 右子樹所有節點的值。中序走訪可得到有序序列。
搜尋:從根開始比較,小於往左,大於往右,時間 O(h),h 為樹高。
插入:找到合適位置後插入新節點,時間 O(h)。
刪除:三種情況——葉節點直接刪、單子節點用子節點取代、雙子節點用後繼節點取代,時間 O(h)。
普通 BST 在極端情況下退化成鏈結串列(O(n)),因此需要平衡機制:
資料庫索引(B-tree 為 BST 的推廣)、關聯式容器(C++ map/set、Java TreeMap)、運算式解析、決策樹。