线段树总结

刚学完线段树的那几天我还不太敢写线段树的总结(我感觉我掌握的并不是很好),但在学完了Treap平衡树之后,我发现:比起平衡树,线段树其实也没有那么的难。。。。。于是就把这篇鸽了的总结补上。
对于线段树,我的理解就是:用一个节点来代表一段区间内的信息,而它的两个子节点则分别维护这段区间的左半段和右半段。用这种二分的方法不断的对这个区间进行拆解,最后的那些节点,每个点只维护一个数的信息,这样就构成了一棵线段树。线段树内部可以维护非常多的辅助信息,例如:这段区间的最大值,最小值,最大子段和,区间和等等等等,只要是可以利用两子段区间得出的,线段树都可以维护。
因为线段树能够维护的辅助信息是多种多样的,因此线段树的题目也是各种各样的,毕竟它没有树状数组那么死板。
线段树可以维护的操作一般有:修改某个点的值,查询某段区间中的辅助信息,也可以给某一段区间上的所有数同时 加/乘 上一个数(进行区间修改的操作需要额外维护懒标记)。
我觉得线段树一个很难的地方就是线段树的代码因为各种原因很容易写错,而且非常的难调,做一道线段树的题目,调代码花的时间比写代码花的时间长是十分正常的,一道题调上好几个小时也是时有发生的(这真的很绝望)。

你可能感兴趣的:(训练日记)