首先是一种对于这个问题的新的建树方法
然后注意lazy标记最开始要初始化为0,不能为1或2,为0的时候表示自己当前的操作已经全部传递给子节点了
注意lazy表示的是自己已经完成修改,但是子节点还没有修改,无论是这道题目还是普通的区间加减,我们在递归到一个节点的时候,他的所有祖先结点的lazy一定都下放了,所以当前节点的状态就是最新的状态
那么看到这道题目,当前这个节点的lazy就是就是这个节点在进行这次更新之前的最后的状态(为0表示所有操作都已经下放给子节点,自己的状态不清楚,所以要去看子节点的状态),如果为1,当然就不用再继续递归了
其实这个查询的代码有一点缺陷,叶子节点的lazy也可能是0,这时就表示这个叶子节点没被操作过,返回0即可
标签:状态,lazy,递归,涂色,给子,节点 From: https://www.cnblogs.com/dingxingdi/p/17912201.html