返回列表 發帖

線段樹Segment Tree

本帖最後由 李知易 於 2024-11-26 22:47 編輯


特色:線段樹是一種二元樹形的資料結構,可以快速查詢結構內包含某一點的所有區間
常見應用:點修改、區間修改、區間查詢(區間求和,求區間最大值,求區間最小值)
建構線段樹:
(pseudo code)
array segment_tree; //用來存線段樹的那個陣列,用普通陣列或vector都可
array a; //序列
int n; //a的大小

//v的區間是[L,R]
void build(int L, int R, vertex v){
    if(L == R){
        segment_tree[v] = 用a[L]得出答案;
        return;
    }
    int M = (L + R) / 2;
    //把區間二等分
    build(L, M, v的左子節點);
    build(M + 1, R, v的右子節點);
}
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

返回列表