字典树
算法引入
字典树 Trie
字典树, 顾名思义, 就是像字典一样的书.
平时查单词, 比如 abandon, 你会怎么查?
大概是先找到 'a' 这个字母所在的范围, 再查 'b' 的范围, 以此类推, 一个单词就被查找到了.
字典树亦是如此. 先放一张图.

可以发现, 字典树用边(点)来代替字母, 从根节点到某一节点的路径就组成了一个单词.
这点很好理解, 在每次插入一个单词的时候, 有时需要记录一些信息, 例如结尾位置... 因题而异.
01-Trie
那什么又是 01-Trie 呢?
01-Trie 就是将数的二进制看成字符串, 仿照字典树建立一颗只有 0, 1 的树.
建立了 01-Trie, 我们就可以执行一些有关于异或的操作.
维护异或和
01-Trie 可以用来维护一些数字的异或和, 支持修改(删除 + 重新插入), 以及全局 + 1.
如果需要维护异或和, 那么要按值从低位到高位建立 Trie.
维护异或和, 只需要知道某一位上 0 和 1 个数的奇偶性即可,
即对于 1, 只有这一位上 1 的个数为奇数时, 这一位才是 1, 所以并不需要知道 Trie 维护了哪些数字.
参考.

浙公网安备 33010602011771号