码迷,mamicode.com
首页 > 其他好文 > 详细

Implement Trie (Prefix Tree)

时间:2015-05-27 07:26:48      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:

完全抄答案

class TrieNode {
    // Initialize your data structure here.
    // ref http://www.programcreek.com/2014/05/leetcode-implement-trie-prefix-tree-java/
    char c;
    HashMap<Character, TrieNode> children = new HashMap<Character, TrieNode>();
    boolean isLeaf;
    public TrieNode() {    }
    public TrieNode(char c) {
        this.c= c;
    }
}

public class Trie {
    private TrieNode root;

    public Trie() {
        root = new TrieNode();
    }

    // Inserts a word into the trie.
    public void insert(String word) {
        HashMap<Character, TrieNode> children = root.children;
        for(int i=0;i<word.length();i++){
            char c = word.charAt(i);
            TrieNode t;
            if(children.containsKey(c)){
                t = children.get(c);
            }else{
                t = new TrieNode(c);
                children.put(c,t);
            }
            children = t.children;
            if(i==word.length()-1)
                t.isLeaf = true;
        }
    }

    // Returns if the word is in the trie.
    public boolean search(String word) {
        TrieNode t =  searchNode(word);
        if(t!=null && t.isLeaf)
            return true;
        else 
            return false;
    }
    

    // Returns if there is any word in the trie
    // that starts with the given prefix.
    public boolean startsWith(String prefix) {
        if(searchNode(prefix)==null)
            return false;
        else
            return true;
    }
    public TrieNode searchNode(String str){
        HashMap<Character, TrieNode> children = root.children;
        TrieNode t=null;
        for(int i=0;i<str.length();i++){
            char c = str.charAt(i);
             if(children.containsKey(c)){
                 t = children.get(c);
                 children = t.children;
             }else{
                return null;
             }
        }
        return t;
    }
}

 

 

trie 数 结构

http://www.cnblogs.com/huangxincheng/archive/2012/11/25/2788268.html

code

ref http://www.programcreek.com/2014/05/leetcode-implement-trie-prefix-tree-java/

Implement Trie (Prefix Tree)

标签:

原文地址:http://www.cnblogs.com/jiajiaxingxing/p/4532336.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!