字典树


预计阅读时间:2 分钟

字典树

字典树(Trie)是前缀匹配的专用兵装:把一堆字符串挂在同一棵树上,前缀问题就变成了从根往下走的问题。本合集收录字典树题目。

基础

leetcode 208

模板题。唯一容易漏的点:节点上要挂 is_end 标记单词结束,否则「前缀存在」和「单词存在」区分不开。

leetcode 648

对每个单词找最短的词根前缀。沿树下行,一碰到 is_end 就停——最先命中的就是最短前缀。

leetcode 1233

要求输出所有最顶级的父文件夹。坑在 / 的特判:前缀匹配上不代表就是父文件夹,/a/b/a 的子文件夹,但 /ab 不是——匹配结束后下一位是 / 的才算。

leetcode 1268

建字典树后,对每个前缀 dfs 找字典序最小的三个单词即可,dfs 的复杂度取决于 products[i] 的长度,3000×1000 的规模能过。

进阶优化:先把 products 排序再插入,插入即按字典序进行,于是可以在建树时就把每个节点的前三个推荐预存在节点上。这样遍历 searchWord 时每一步 $O(1)$ 拿答案,products[i]searchWord 长度到 $10^5$ 的规模也能做。


未完待续,本合集随训练进度持续补完。


本文由 aboom 原创,转载请注明出处。

📖相关推荐