程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 算法5-7:區間搜索

算法5-7:區間搜索

編輯:C++入門知識

區間搜索問題就是給定一系列區間,和一個待測區間,求與待測區間相交的區間。


為了解決這個問題,需要專門編寫一個類,這個類的接口如下:

public interface IntervalST, Value> {
    void put(Key lo, Key hi, Value value);
    Value get(Key lo, Key hi)
    void delete(Key lo, Key hi)
    Iterable intersect(Key lo, Key hi);
}


每個節點中有兩個值,第一個值是區間的起點和終點,第二個值是該節點以及子節點中最大的區間終點。為了簡化問題,將二叉樹以區間起點作為關鍵字。


\


插入操作


<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+CrLlyOvH+LzktcTKsbryo6y4+b7dxtXNqLb+subK97XEuebU8r340NCy5cjro6zU2rLlyOvN6rPJ1q6689Do0qq4/NDCy/nT0Li4vdq147XE1+6089PSx/i85KGjPC9wPgo8cD4KPGJyPgo8L3A+CjxoMT6y6dXSstnX9zxicj4KPC9oMT4KPHA+Cjxicj4KPC9wPgo8cD4KsunV0rLZ1/fQ6NKq1rTQ0NK7z8Kyvdboo7o8L3A+Cjx1bCBjbGFzcz0=" list-paddingleft-2">

  • 如果當前節點與被搜索的區間有交集,返回當前節點

  • 如果左子節點是空的,向右側深入

  • 如果整個區間在當前節點的左側,向左側深入

  • 其余情況向右側深入


    復雜度


    所有操作的復雜度均為logN。


    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved