對於一棵 最大線段樹, 每個節點包含乙個額外的max
屬性,用於儲存該節點所代表區間的最大值。
設計乙個modify
的方法,接受三個引數root
、index
和value
。該方法將 root 為根的線段樹中 [start, end] = [index, index] 的節點修改為了新的 value ,並確保在修改後,線段樹的每個節點的 max 屬性仍然具有正確的值。
注意事項
在做此題前,最好先完成線段樹的構造和 線段樹查詢這兩道題目。
您在真實的面試中是否遇到過這個題?
yes
樣例對於線段樹:
[1, 4, max=3]
/ \
[1, 2, max=2] [3, 4, max=3]
/ \ / \
[1, 1, max=2], [2, 2, max=1], [3, 3, max=0], [4, 4, max=3]
如果呼叫modify(root, 2, 4)
, 返回:
[1, 4, max=4]
/ \
[1, 2, max=4] [3, 4, max=3]
/ \ / \
[1, 1, max=2], [2, 2, max=4], [3, 3, max=0], [4, 4, max=3]
或 呼叫modify(root, 4, 0)
, 返回:
[1, 4, max=2]
/ \
[1, 2, max=2] [3, 4, max=0]
/ \ / \
[1, 1, max=2], [2, 2, max=1], [3, 3, max=0], [4, 4, max=0]
class solution
}};
lintcode203 線段樹的修改
題目描述 思路 線段樹的葉子節點就是陣列中每乙個位置的元素值,所以先找到要修改的位置,即先到達要修改的葉子節點,修改該節點的max值,然後再從葉子節點回到根節點,返回過程中,比較節點的左右孩子的max值,取兩者較大者作為本節點的max值,這樣無論value值和max值的大小關係,都作為一種情況考慮。...
lintcode203 線段樹的修改
對於一棵 最大線段樹,每個節點包含乙個額外的 max 屬性,用於儲存該節點所代表區間的最大值。設計乙個 modify 的方法,接受三個引數 root index 和 value。該方法將 root 為根的線段樹中 start,end index,index 的節點修改為了新的 value 並確保在修...
線段樹的查詢 LintCode
對於乙個有n個數的整數陣列,在對應的線段樹中,根節點所代表的區間為0 n 1,每個節點有乙個額外的屬性max,值為該節點所代表的陣列區間start到end內的最大值。為segmenttree設計乙個 query 的方法,接受3個引數root,start和end,線段樹root所代表的陣列中子區間 s...