字典树

题目链接

算法引入

字典树 Trie

字典树, 顾名思义, 就是像字典一样的书.

平时查单词, 比如 abandon, 你会怎么查?

大概是先找到 'a' 这个字母所在的范围, 再查 'b' 的范围, 以此类推, 一个单词就被查找到了.

字典树亦是如此. 先放一张图.

可以发现, 字典树用边(点)来代替字母, 从根节点到某一节点的路径就组成了一个单词.

这点很好理解, 在每次插入一个单词的时候, 有时需要记录一些信息, 例如结尾位置... 因题而异.

01-Trie

那什么又是 01-Trie 呢?

01-Trie 就是将数的二进制看成字符串, 仿照字典树建立一颗只有 0, 1 的树.

建立了 01-Trie, 我们就可以执行一些有关于异或的操作.

维护异或和

01-Trie 可以用来维护一些数字的异或和, 支持修改(删除 + 重新插入), 以及全局 + 1.

如果需要维护异或和, 那么要按值从低位到高位建立 Trie.

维护异或和, 只需要知道某一位上 0 和 1 个数的奇偶性即可,

即对于 1, 只有这一位上 1 的个数为奇数时, 这一位才是 1, 所以并不需要知道 Trie 维护了哪些数字.

参考.

posted @   Steven1013  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示