← 返回算法与AI总览 算法与AI · 知识点深化 · Trie 字典树与位运算技巧:前缀匹配与状态压缩
算法与AI · 知识点深化 · 算法思想

Trie 字典树与位运算技巧:前缀匹配与状态压缩

Trie(字典树)解决前缀匹配:自动补全、搜索提示。位运算用 & | ^ 做状态压缩和快速判断。这一页把这两个"小而美"的工具讲透。

① 怎么学(4 步走,约 65 分钟)

先建立直觉再抠细节,按这四步走最稳:

1看图建立直觉(10 分钟)
读②③:先在脑子里画出本课核心结构图。
2记完整体系(15 分钟)
读④:把对比表和公式看懂,不要急着背。
3跟例题走一遍(20 分钟)
精读⑤:看三个例题怎么用知识点解题。
4刷题纠错(剩余时间)
做⑦⑩,错题回⑥诊断。
本课小目标学完你要能:① 手写 Trie;② 前缀查询;③ 常用位运算技巧;④ 状态压缩。

② 一图看懂:Trie 与位运算

Trie/位运算 Trie 结构 节点存 children 插入/查询 逐字符走 位运算 &|^~ 状态压缩 位掩码 应用:搜索提示/前缀 轻量数据结构 易错:Trie 节点内存大 用数组/Map
读法:中心是本课主题,四条分支展开核心维度,下方是典型应用与高频易错点。

③ 本质直觉:Trie 就是"共享前缀的树"

把 words ["apple","app","ban"] 存 Trie:根节点 a→p→p→l→e,"app" 共享前三个节点。查前缀 "ap" 直接沿 a→p 走,不用遍历所有词。

节点:children[26](小写字母)或 Map,isEnd 标记词结束。

位运算:& 取位、| 置位、^ 翻转。n&(n-1) 消最低位 1,判断 2 的幂。

root a b p
n & (n-1)消掉最低位的 1。判 2 的幂:n>0 且 n&(n-1)==0。统计 1 的个数反复消。

④ 完整知识体系

位运算常用技巧

操作代码用途
取第 i 位n & (1<判断某位
置第 i 位 1n | (1<状态置位
翻转第 i 位n ^ (1<切换状态
消最低位 1n & (n-1)判 2 的幂/计数
高低位交换(n<<16)|(n>>16)位反转
Trie 插入for c: 子节点不存在则建; 走到尾 isEnd=true
Trie 查询for c: 子节点不存在返回 false; 走到尾看 isEnd

状态压缩

用一个 int 的 32 位表示 32 个开关。n|(1<<i) 打开,n&~(1<<i) 关闭。DFS 状态压缩 DP 常用。

⑤ 应用场景与例题

例1 插入 apple, app,查 ap
沿 a→p 走,存在。查 app 走 a→p→p 且 isEnd。
例2 判断 n 是不是 2 的幂
n>0 且 n&(n-1)==0。因为 2 的幂二进制只有一个 1。
例3 统计二进制 1 的个数
while(n){ count++; n&=n-1 },消最低位 1。
做题心法Trie 共享前缀省空间,位运算比乘除快。

⑥ 高频错误诊断(4 条)

错误1:Trie 查询不查 isEnd查前缀和查完整单词不同:查单词要看 isEnd。
错误2:位运算优先级搞错& 比 == 低,要加括号。
错误3:n&(n-1) 判断忘记 n>0n=0 也满足,要排除。
错误4:Trie 用链表存 children用数组[26]或 Map,按字符走。

⑦ 考点真题演练(5 题)

考点分布

考法出题形式应对
Trie问作用前缀匹配
插入问结构children 数组
位运算n&(n-1) 作用消最低位1
2的幂判断条件n>0且n&(n-1)==0

真题basic1. Trie 主要解决什么问题?

真题mid2. Trie 中标记一个词结束用?

真题mid3. n & (n-1) 的作用是?

真题hard4. 判断 n 是 2 的幂?

真题hard5. 状态压缩中用一个 int 表示什么?

⑧ 必背知识点卡

Trie:共享前缀树,children 数组
插入:逐字符走,尾标 isEnd
查询:查前缀不看 isEnd,查单词看
n&(n-1):消最低位 1
2 的幂:n>0 且 n&(n-1)==0
置位:n|(1<
状态压缩:一个 int 存 32 个开关

⑨ 动手输出:写 Trie 插入和查询

场景:实现前缀树。
① 节点:children[26] + isEnd。
② 插入:逐字符走,不存在就建新节点。
③ 结尾:最后节点 isEnd=true。
④ 查询:逐字符走,断了就 false。
⑤ 前缀:走到尾不看 isEnd。
口述思路Trie 逐字符走,isEnd 区分单词和前缀。

⑩ 分层练习(基础 + 中档 + 拔高)

▍基础 6 题

基础1Trie 作用?
前缀匹配。
基础2节点存什么?
children 和 isEnd。
基础3n&(n-1) 作用?
消最低位 1。
基础4怎么置第 i 位?
n|(1<
基础52 的幂判断?
n>0 且 n&(n-1)==0。
基础6怎么清第 i 位?
n&~(1<

▍中档 5 题

中档1Trie 和哈希表区别?
Trie 支持前缀,哈希不支持。
中档2查单词和查前缀区别?
查单词要看 isEnd,前缀不看。
中档3统计 1 的个数?
while(n) count++, n&=n-1。
中档4为什么位运算快?
直接操作 CPU 指令,比乘除快。
中档5异或 ^ 用途?
翻转、找只出现一次的数。

▍拔高 5 题

拔高1Trie 内存优化?
节点多用数组或压缩。
拔高2位运算交换两数?
a^=b;b^=a;a^=b。
拔高3不用比较判断奇偶?
n&1。
拔高4位图是什么?
用 bit 数组表示集合。
拔高5Trie 时间复杂度?
插入查询都是 O(L),L 是词长。

⑪ 记忆口诀 + 7 天复习计划

三句口诀① Trie 共享前缀,children 走字符。② n&(n-1) 消最低位,判 2 的幂。③ 位运算状态压缩,一个 int 32 开关。
天任务自检
第 1 天读②③,写 Trie 节点结构对
第 2 天背位运算表 + 基础 6 题操作记住
第 3 天做中档 5 题,写插入查询代码对
第 4 天做拔高 5 题,判 2 的幂条件对
第 5 天做⑦真题 5 题限时每题 5 分钟
第 6-7 天合书白板写 Trie不看资料

← 返回算法与AI总览