每乙個節點儲存的是乙個區間中相應統計值
// 在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)
// 返回區間[queryl, queryr]的值
public e query
(int queryl, int queryr)
// 在以treeindex為根的線段樹中[l...r]的範圍裡,搜尋區間[queryl...queryr]的值
private e query
(int treeindex, int l, int r, int queryl, int queryr)
@override
public string tostring()
res.
(']');
return res.
tostring();}}
線段樹(區間樹)
目錄 為什麼要使用線段樹 什麼是線段樹 線段樹融合介面 線段樹實現 線段樹例題 融合介面 author administrator param public inte ce merger package com.suanfa.segmenttree 線段樹 區間樹 author administra...
區間樹和線段樹
注意 區間樹和線段樹不一樣哦,線段樹是一種特殊的區間樹。區間樹 區間樹是在紅黑樹基礎上 進行擴充套件得到的支援以區間為元素的動態集合的操作,其中每個節點的關鍵值是區間的左端點。通過建立這種特定的結構,可是使區間的元素的查詢和插入都可以在o lgn 的時間內完成。相比於基礎的紅黑樹資料結構,增加了乙個...
線段樹 區間合併
hdu 1540 tunnel wa re 詳細見 include include include include include define max 50010 define lson l,m,k 1 define rson m 1,r,k 1 1 using namespace std typ...