news 2026/9/9 15:57:48

【算法专题训练】34、前缀树

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【算法专题训练】34、前缀树

1、前缀树基础

前缀树又称为字典树,它用一个树状的数据结构存储一个字典中的所有单词,如图

  • 前缀树是一棵多叉树,一个节点可能有多个子节点,字典树的话子节点最多为26个(26个英文单词)。
  • 前缀树中除根节点外,每个节点表示字符串中的一个字符,而字符串由前缀树的路径表示。
  • 前缀树的根节点不表示任何字符

前缀树路径

  • 字符串在前缀树中的路径并不一定终止于叶节点。如果一个单词时另一个单词的前缀,那么较短的单词对应的路径是较长的单词对应的路径的一部分。
  • 如果前缀树路径到达某个节点时表示了一个完整的字符串,则字符串最后一个字符对应的结点有特殊的标识。

2、LCR 062. 实现 Trie (前缀树)

题目信息:

  • https://leetcode.cn/problems/QC3q1f/description/
Trie(发音类似"try")或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。 请你实现 Trie 类:Trie()初始化前缀树对象。voidinsert(String word)向前缀树中插入字符串 word 。 booleansearch(String word)如果字符串 word 在前缀树中,返回true(即,在检索之前已经插入);否则,返回false。 booleanstartsWith(String prefix)如果之前已经插入的字符串 word 的前缀之一为 prefix ,返回true;否则,返回false。 示例: 输入 inputs=["Trie","insert","search","search","startsWith","insert","search"]inputs=[[],["apple"],["apple"],["app"],["app"],["app"],["app"]]输出[null,null,true,false,true,null,true]解释 Trie trie=newTrie();trie.insert("apple");trie.search("apple");// 返回 Truetrie.search("app");// 返回 Falsetrie.startsWith("app");// 返回 Truetrie.insert("app");trie.search("app");// 返回 True提示:1<=word.length,prefix.length<=2000word 和 prefix 仅由小写英文字母组成 insert、search 和 startsWith 调用次数 总计 不超过3*104

解题思路:

  • 1、审题:前缀树实现,前缀树是一颗多叉树,如果规定前缀树节点值保存的小写字母,则多叉树的子树大小为26(26个英文字母个数)
  • 2、解题:
  • 实现二叉树的字符串插入insert,字符串查询search,和前缀字符判断startsWith
  • 在构造函数中,定义一个26个大小的数组,用于标示当前结点的子节点保存位置
  • 当调用insert方法插入字符串时,先找到根节点,遍历字符串,并从前缀树的根节点开始判断,遍历到的字符在前缀树中是否存在,如果不存在则新建该字符标识的结点
    • 直到字符串全部遍历完,并将该结点标识为是单个单词
  • 查询方法search和前缀树内容判断,也是类似的思路

代码实现:

classTrie{public:Trie(){root=newTrieNode();}classTrieNode// 内部类{public:boolisWord=false;TrieNode*children[26];// 数组TrieNode(){for(inti=0;i<26;i++){children[i]=nullptr;}}~TrieNode(){for(inti=0;i<26;i++){deletechildren[i];children[i]=nullptr;}}};/** Inserts a word into the trie. */voidinsert(string word){TrieNode*node=root;for(inti=0;i<word.length();i++){intindex=word[i]-'a';if(node->children[index]==nullptr){node->children[index]=newTrieNode();}node=node->children[index];}node->isWord=true;}/** Returns if the word is in the trie. */boolsearch(string word){TrieNode*node=root;for(inti=0;i<word.length();i++){intindex=word[i]-'a';if(node->children[index]==nullptr){returnfalse;}node=node->children[index];}returnnode->isWord;}/** Returns if there is any word in the trie that starts with the given prefix. */boolstartsWith(string prefix){TrieNode*node=root;for(inti=0;i<prefix.length();i++){intindex=prefix[i]-'a';if(node->children[index]==nullptr){returnfalse;}node=node->children[index];}returntrue;}private:TrieNode*root;};

3、总结

  • 前缀树概念,字典树,是多叉树,每个单词对应树的一条路径,每个节点对应单词的结点
  • 单词结束位置的结点有特殊标记位 isWord
  • 前缀树的创建与查询,将单词插入到前缀树中,根据单词的字符查找对应位置的结点是否存在,不存在的话则新建结点,并重新赋值。
  • 单词查询方式也一样的逻辑,根据遍历到的字符位置查找结点,直到单词结尾的结点,并判断是否有结束标识。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/9 15:09:28

【Dify高性能视频处理指南】:精准帧率设置提升提取速度300%

第一章&#xff1a;Dify视频帧提取的核心机制Dify平台在处理视频内容理解时&#xff0c;依赖其高效的视频帧提取机制来实现对视觉信息的结构化解析。该机制通过精准的时间戳控制与自适应采样策略&#xff0c;确保关键帧被有效捕获&#xff0c;同时避免冗余数据的生成。帧提取流…

作者头像 李华
网站建设 2026/9/9 4:28:35

为什么你的Tesseract在Dify中处理慢?这5个批量优化关键点必须掌握

第一章&#xff1a;Dify Tesseract 的批量处理在自动化文档识别与数据提取场景中&#xff0c;Dify 集成 Tesseract OCR 实现高效的批量图像文本识别&#xff0c;显著提升处理效率。通过脚本化调度与配置优化&#xff0c;可对成百上千张图像文件进行并行识别&#xff0c;适用于发…

作者头像 李华
网站建设 2026/9/8 21:22:31

CDM(充电器件模型)导致芯片失效原因

CDM&#xff08;Charged-Device Model&#xff0c;充电器件模型&#xff09;导致的芯片失效&#xff0c;核心机理是“芯片自身带电→某一引脚瞬间接地→内部电荷在纳秒级时间内形成极高峰值电流→敏感结构被击穿”。常见失效原因可归纳为三大类&#xff1a;介质击穿&#xff08…

作者头像 李华
网站建设 2026/9/8 7:33:41

IL-2:调控免疫稳态的“双面因子”

在免疫系统的复杂调控网络中&#xff0c;白细胞介素-2&#xff08;IL-2&#xff09;无疑是核心枢纽之一。自1976年被发现并命名为“T细胞生长因子”以来&#xff0c;IL-2凭借其既能驱动免疫攻击、又能维持免疫耐受的“双面性”&#xff0c;成为连接基础免疫学与临床治疗的关键分…

作者头像 李华
网站建设 2026/9/8 18:07:54

【环境风险评估效能革命】:基于R语言的动态监测系统搭建实录

第一章&#xff1a;环境风险评估的范式转型与R语言机遇传统环境风险评估长期依赖静态模型和经验公式&#xff0c;难以应对复杂生态系统中的非线性动态与不确定性。随着大数据与开源计算生态的发展&#xff0c;评估范式正从“假设驱动”向“数据驱动”转型。R语言凭借其强大的统…

作者头像 李华
网站建设 2026/9/9 4:28:03

揭秘Dify中PDF加密与权限验证机制:企业级数据防护必备技能

第一章&#xff1a;揭秘Dify中PDF加密与权限验证机制&#xff1a;企业级数据防护必备技能在企业级应用中&#xff0c;敏感文档的安全分发至关重要。Dify 通过集成 PDF 加密与细粒度权限验证机制&#xff0c;确保生成的 PDF 文件仅能被授权用户访问和操作。该机制结合 AES-256 加…

作者头像 李华