題目描述:
思路:在查詢過程中,可能會遇到三種情況,目標區間在本區間中點的左邊; 在本區間中點的右邊; 跨越本區間的中點。
在左邊的情況:從當前節點移動到左孩子節點。
在右邊的情況:從當前節點移動到右孩子節點。
在中間的情況:從中間分開,兩邊都要考慮,取其大者。
遞迴進行。
**:
int query(segmenttreenode * root, int start, int end)
int mid = root->start + (root->end - root->start)/2;
if(start > mid)
else if(end <= mid)
else
}
lintcode 202 線段樹的查詢
對於乙個有n個數的整數陣列,在對應的線段樹中,根節點所代表的區間為0 n 1,每個節點有乙個額外的屬性max,值為該節點所代表的陣列區間start到end內的最大值。為segmenttree設計乙個query的方法,接受3個引數root,start和end,線段樹root所代表的陣列中子區間 sta...
線段樹的查詢 LintCode
對於乙個有n個數的整數陣列,在對應的線段樹中,根節點所代表的區間為0 n 1,每個節點有乙個額外的屬性max,值為該節點所代表的陣列區間start到end內的最大值。為segmenttree設計乙個 query 的方法,接受3個引數root,start和end,線段樹root所代表的陣列中子區間 s...
Lintcode 線段樹的構造
線段樹是一棵二叉樹,他的每個節點包含了兩個額外的屬性start和end用於表示該節點所代表的區間。start和end都是整數,並按照如下的方式賦值 yes說明線段樹 又稱區間樹 是一種高階資料結構,他可以支援這樣的一些操作 見百科 線段樹區間樹 樣例比如給定start 1,end 6,對應的線段樹為...