WBLT学习笔记
我是FHQ单推人,但我还是得学WBLT。
引入
WBLT ( Weight Balanced Leafy Tree ) 顾名思义是 Weight Balanced Tree 和 Leafy Tree 的结合。
Weight Balanced Tree 的每个结点储存这个结点下子树的大小,并且通过保持左右子树的大小关系在一定范围来保证树高。
Leafy Tree 维护的原始信息仅存储在树的 叶子节点 上,而非叶子节点仅用于维护子节点信息和维持数据结构的形态。我们熟知的线段树就是一种 Leafy Tree。———OI-wiki
学的主要原因是FHQ的可持久化不好写但好像WBLT也不好写。
平衡方式
一个WBLT树的节点需要保留如下信息:
sz[u]子树大小。l[u],r[u]左右儿子。key[u]键值。
因为只有叶子节点实际存储键值,所以其他节点处存储的信息是由它们的子节点合并得到的,以方便后续查询。
一般将儿子中较大的键值存于根节点。
\(\alpha\) - 平衡的概念
定义一个非叶子节点 \(u\) 的平衡度
\[\rho(u)=\dfrac{\min\{sz_{lson_u},sz_{rson_u}\}}{sz_u}
\]
对于 \(\alpha \in (0,\frac{1}{2}]\),若某一节点 \(u\) 的平衡度满足 \(\rho(u) \geq \alpha
\),则称该节点 \(\alpha\) - 平衡。线段树的每一个节点都满足 \(\frac{1}{2}\) - 平衡。
没空学,先咕咕咕。

浙公网安备 33010602011771号