lintcode203 線段樹的修改

2021-08-20 08:06:46 字數 630 閱讀 9071

題目描述:

思路:線段樹的葉子節點就是陣列中每乙個位置的元素值,所以先找到要修改的位置,即先到達要修改的葉子節點,修改該節點的max值,然後再從葉子節點回到根節點,返回過程中,比較節點的左右孩子的max值,取兩者較大者作為本節點的max值,這樣無論value值和max值的大小關係,都作為一種情況考慮。

**:

void modify(segmenttreenode * root, int index, int value) 

if(root->start == index && root->end==index)

int mid = root->start + (root->end - root->start)/2;

if(index <= mid)

else

int l = root->left->max; //比較左右孩子的max值,大者作為本節點的max值

int r = root->right->max;

root->max = l>=r? l : r;

}

lintcode 203 線段樹的修改

對於一棵 最大線段樹,每個節點包含乙個額外的max屬性,用於儲存該節點所代表區間的最大值。設計乙個modify的方法,接受三個引數root index和value。該方法將 root 為根的線段樹中 start,end index,index 的節點修改為了新的 value 並確保在修改後,線段樹的...

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...