代码改变世界

数据结构找工作准备

2016-02-02 22:17  xiaomacgrady  阅读(39)  评论(0)    收藏  举报

字典树:又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。

根节点不包含字符,除根节点外每一个节点都只包含一个字符; 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串; 每个节点的所有子节点包含的字符都不相同。

 public TrieNode buildTrie(String[] words) {

          TrieNode root = new TrieNode();

          for(String w : words) {

                 TrieNode p = root;

                 for(char c : w.toCharArray()) {

                      int i = c - 'a';

                      if(p.next[i] == null) p.next[i] = new TrieNode(); p = p.next[i];

                  }

                  p.word = w;

              }

               return root;

         }

         class TrieNode {

             TrieNode[] next = new TrieNode[26];

             String word;

        }