package com.trie;
public class TrieNode {
public final static int NODE_SIZE = 27;
private TrieNode[] nodes;
private int nodeLevel;
private boolean isWord;
private char nodeChar;
public boolean isWord() {
return isWord;
}
public void setWord(boolean isWord) {
this.isWord = isWord;
}
public char getNodeChar() {
return nodeChar;
}
public void setNodeChar(char nodeChar) {
this.nodeChar = nodeChar;
}
public int getNodeLevel() {
return nodeLevel;
}
public void setNodeLevel(int nodeLevel) {
this.nodeLevel = nodeLevel;
}
public TrieNode( char nodeChar,int nodeLevel){
this.nodeLevel = nodeLevel;
nodes = new TrieNode[NODE_SIZE];
this.nodeChar = nodeChar;
this.isWord = false;
}
public TrieNode insertNode(char character){
TrieNode tempNode=null;
int index = character - 'a';
if(index >= 0 && index <NODE_SIZE){
if((tempNode =nodes[index])!= null){
//If node is already present
return nodes[index];
}else{
tempNode = new TrieNode(character,this.nodeLevel+1);
nodes[index] = tempNode;
System.out.println("Inserted node : "+character+" @"+this.nodeLevel);
}
}
return tempNode;
}
public boolean isNodePresent(char character){
int index = character - 'a';
if(index <0 || index >= NODE_SIZE){
return false;
}
if(nodes[index]!=null){
return true;
}else{
return false;
}
}
/**
* Fetch the node present for particular character.
*
* @param character character location where we are looking for the TrieNode.
* @return returns the node which is present at the particular character location.
*/
public TrieNode getNode(char character){
int index = character - 'a';
if(index <0 || index >= NODE_SIZE){
return null;
}
return nodes[index];
}
public void print(){
System.out.print("Characters present at level "+nodeLevel+": ");
for(int index=0;index<NODE_SIZE;index++){
if(nodes[index]!=null){
System.out.print(index+'a'+" ");
}
}
}
}