208. 实现 Trie (前缀树)(Medium)

310 阅读1分钟

Trie

Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构,如英文字母的字典树是一个26叉树,数字的字典树是一个10叉树。Trie树的基本性质可以归纳为:

(1)根节点不包含字符,除根节点之外每个节点只包含一个字符。

(2)从根节点到某一个节点,路径上经过的字符连接起来,为该节点对应的字符串。

(3)每个节点的所有子节点包含的字符串不相同。

实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。

示例:

Trie trie = new Trie();

trie.insert("apple");
trie.search("apple");   // 返回 true
trie.search("app");     // 返回 false
trie.startsWith("app"); // 返回 true
trie.insert("app");   
trie.search("app");     // 返回 true
复制代码

说明:

  • 你可以假设所有的输入都是由小写字母 a-z 构成的。
  • 保证所有输入均为非空字符串。

题解:比较简单的做法是每个节点都设置一个大小26的数组,用来表示26个字母

public class Trie {

        //前缀树的节点
     
            //每个节点包含26个字母
         
            //是否为叶子节点的标志
      

        //根节点为空节点
        

      

            //从根节点出发,迭代添加
            
                //如果当前字符没有添加,就新建
             
                //更新pre
           
            //添加完之后,将isLeaf置为true,标识存储完了
        

       

            //从根节点开始查找
         
                //如果遇到一处没有,就返回false
               
                //更新pre
           
            //返回最后一个字符的isLeaf
       

        

            //从根节点开始查找
        
                //如果遇到一处没有,就返回false
              
                //更新pre
  }