【施工中,稍安勿躁…】
线段树…就是一个长得像这个样子的一棵树!
这颗树上的一个点就代表了一个连续的区间,当然如果你高兴也可以把区间当成线段,所以这玩意儿就叫线段树。然后我们发现一个点的左孩子右孩子就是把这个区间从中间剖成两段后的前一段后一段。
比如我们现在有一个数列…就1 2 3 4 5 6 7 8 9好了
那我们可以在线段树上维护一个这个区间内元素的和,我们发现,左端点=右端点的这些点的和就是数列里的元素,如果不等于,和就等于左孩子的和+右孩子的和。
线段树一般有两种写法~
比较好写的是zkw线段树,支持单点修改区间查询。(不一定要有区间减法)
例如这是一个单点修改、区间查询的zkw线段树:
原文:http://www.cnblogs.com/zzqsblog/p/5243336.html