線段樹 02 構建線段樹

2021-09-14 01:21:53 字數 849 閱讀 7640

public inte***ce merger

不能再縮小的基本問題是:對treeindex指向的節點的情況進行討論;

public class segmenttree

// 在treeindex的位置建立表示區間[l...r]的線段樹

private void buildsegmenttree(int treeindex, int l, int r)

int lefttreeindex = leftchild(treeindex);

int righttreeindex = rightchild(treeindex);

// int mid = (l + r) / 2;

int mid = l + (r - l) / 2;

buildsegmenttree(lefttreeindex, l, mid);

buildsegmenttree(righttreeindex, mid + 1, r);

tree[treeindex] = merger.merge(tree[lefttreeindex], tree[righttreeindex]);

}public int getsize()

public e get(int index)

// 返回完全二叉樹的陣列表示中,乙個索引所表示的元素的左孩子節點的索引

private int leftchild(int index)

// 返回完全二叉樹的陣列表示中,乙個索引所表示的元素的右孩子節點的索引

private int rightchild(int index)

}

線段樹 01 線段樹基礎

物理上 public class segmenttree public int getsize public e get int index 返回完全二叉樹的陣列表示中,乙個索引所表示的元素的左孩子節點的索引 private int leftchild int index 返回完全二叉樹的陣列表示中...

線段樹和zkw線段樹

好啦,我們就開始說說線段樹吧 線段樹是個支援區間操作和查詢的東東,平時的話還是蠻實用的 下面以最基本的區間加以及查詢區間和為例 線段樹顧名思義就是棵樹嘛,葉子節點是每個基本點,它們所對應的父親就是它們的和,具體如下圖 但是對於這樣的線段樹來說,操作所需的時間是遠達不到我們的要求的 會被t 因為我們會...

線段樹的構建和查詢

本系列函式引數表示為 k 節點儲存區間 l,r 的和,查詢 修改的點為 x 查詢 修改的區間為 x,y 我們從線段樹的定義可以知道,k 節點儲存 ls k 和 rs k 兩節點的和。所以,我們採用遞迴構建線段樹。當區間的左端點與右端點重合時,即為葉子結點。非葉子結點在回溯中計算出。void buil...