本文章连载AC军团周报
-> 线段树 : 从入门到入土【4】
前言
从前有一位远古神犇,他汇集各大数据结构之精华,经过艰苦卓绝的研究,终于炼制成了一种新的,更简洁的,更快的线段树——zkw线段树
(大雾)
四、zkw线段树基础
我们已经学过了线段树的基础了,相信大家已经熟练掌握线段树大概的样子了。
线段树什么样子,,,二叉树?
那二叉树我们怎么进行查找修改?是不是用的递归?
突然,有一天,你可能想,,,
递归好慢啊,又费栈空间,,,
怎么办?可以不用递归吗?
二叉树?诶,好熟悉,我们要是换成完全二叉树呢?这样的我们子节点就好找了啊,直接for就好啊
zkw线段树就是以堆式存储来实现非递归的线段树。堆式存储,好高级的名词,,,实际上,堆式存储就是指像二叉树那样存,可以用一些完全二叉树的性质大到快速查找的目的
首先,上个丑图来了解下zkw线段树的样子:
诶,那个8怎么是红的?
我们首先可以看到,这个线段树并不是我们当时看到的线段树那样维护的,原来我们是18,这次,我们只维护了07?我们编号向左挪了一位?
不然。
实质上我们真的只维护了1~7。为什么?那[0,1)是干什么的呢?
那个节点和我们的查询操作有关。(之后再讲)
首先我们要维护一个M。
这个M记录的是一个2的几次幂数,且满足M<=