lintcode 203 線段樹的修改

2021-08-19 13:21:39 字數 1226 閱讀 7634

對於一棵 最大線段樹, 每個節點包含乙個額外的max屬性,用於儲存該節點所代表區間的最大值。

設計乙個modify的方法,接受三個引數rootindexvalue。該方法將 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...