链接:https://www.lintcode.com/zh-cn/problem/segment-tree-modify/#
样例
对于线段树:
[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 { public: /** * @param root: The root of segment tree. * @param index: index. * @param value: value * @return: nothing */ void modify(SegmentTreeNode * root, int index, int value) { // write your code here if(!root) return; if(indexstart || index>root->end) return; if(root->start==root->end && root->end==index) root->max=value; else { modify(root->left,index,value); modify(root->right,index,value); root->max=max(root->left->max,root->right->max); } } };