Skip to content

Instantly share code, notes, and snippets.

@shiangree
Created October 9, 2015 02:31
Show Gist options
  • Select an option

  • Save shiangree/3afd8543389774f1735b to your computer and use it in GitHub Desktop.

Select an option

Save shiangree/3afd8543389774f1735b to your computer and use it in GitHub Desktop.
Trie Implementation
package build;
import java.util.*;
public class Trie {
private int SIZE = 26;
private TrieNode root;
Trie()
{
root = new TrieNode();
}
private class TrieNode{
private int count;
private TrieNode[] children;
private boolean isLeaf;
private char ch;
TrieNode()
{
count=1;
children = new TrieNode[SIZE];
isLeaf = false;
}
}
public void insert(String s)
{
if(s==null || s.length()<=0)
return;
TrieNode node = root;
char[] letters = s.toCharArray();
for(int i=0;i<s.length();++i)
{
int pos = letters[i]-'a';
if(node.children[pos]==null)
{
node.children[pos] = new TrieNode();
node.children[pos].ch = letters[i];
}
else
{
node.children[pos].count++;
}
node = node.children[pos];
}
node.isLeaf=true;
}
public int countPrefix(String prefix)
{
if(prefix==null || prefix.length()<=0)
return -1;
TrieNode node = root;
char[] letters = prefix.toCharArray();
for(int i=0;i<prefix.length();++i)
{
int pos = letters[i]-'a';
if(node.children[pos]==null)
return 0;
else
node = node.children[pos];
}
return node.count;
}
public boolean has(String s)
{
if(s==null || s.length()<=0)
return false;
TrieNode node = root;
char[] letters=s.toCharArray();
for (int i = 0, len = s.length(); i < len; i++) {
int pos = letters[i] - 'a';
if (node.children[pos] != null) {
node = node.children[pos];
} else {
return false;
}
}
return node.isLeaf;
}
public void preTraverse(TrieNode node)
{
if(node!=null)
{
System.out.println(node.ch+' ');
for(TrieNode child:node.children)
{
preTraverse(child);
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment