10 April 2010

TRIE data structure Part 6 : A Sample UI

Lets have a look at a sample application in Swing. We load the TRIE data structure using a dictionary word list. And using the application we can perform a search. This application is a very much prototypical just to check the insert() and search() operations.

Input file : words.txt

Sample Application

There are two possible outcomes to our search criteria, one true and another false. The following is the dialog shown when a word "article" is entered.

And when a word something like "dasdsa" is entered the following dialog is shown.

The Java code for the Trie Loader,

package dsa.tries;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class TrieLoader {
 public static Trie trieDSA;

 public static void main(String[] args) {
  TrieLoader trieLoader = new TrieLoader();
  new TrieTestFrame();
 public void load(){
  trieDSA = new Trie();
  BufferedReader br = null;
  try {
   br = new BufferedReader(new FileReader(new File("src/properties/words.txt")));
   String eachLine = null;
  } catch (Exception e) {
  } finally{
    try {
    } catch (IOException e) {

The TrieTestFrame,

package dsa.tries;

import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class TrieTestFrame extends JFrame {

 private static final long serialVersionUID = 1L;
 private JPanel basePanel = new JPanel();
 private JTextField textField = new JTextField(20);
 private JButton button = new JButton("Check");

 public TrieTestFrame(){
 private void designUI(){
  this.setTitle("TRIE Test");
  button.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
     JOptionPane.showMessageDialog(basePanel, "The word you entered exist!!");
     JOptionPane.showMessageDialog(basePanel, "The word you entered does not exist!!","Error",JOptionPane.ERROR_MESSAGE);
  Toolkit tk = Toolkit.getDefaultToolkit();
     Dimension screenSize = tk.getScreenSize();
     int screenHeight = screenSize.height;
     int screenWidth = screenSize.width;
     setLocation(screenWidth / 2 - 200, screenHeight / 2 - 50);

For the Node and Trie class please click here.



Maulish Soni said...

very memory consuming and time to buid trie is very large

BragBoy said...

@Maulish: I would tend to disagree with you. Memory for a TRIE is not huge as you think it is. In fact, we can optimize this by using external memory and fetch only the ones that we require on a need to know basis. And, regarding the construction of a TRIE, it is still efficient. Its like constructing a binary search tree. Every insert in a BST takes log n times (assuming a balanced tree). Same is the case here. Every word will be in the order of the word's length.
Hope this helped.

shoba said...

i want to print the contents of this trie tree for a string. but cant make it. can u provide code for displaying the contents of trie.

BragBoy said...

@shoba: Sure I can do that. Is it ok if I do that during this weekend ?

shoba said...

@bragadeesh: its okie. do at ur convenience.

Unknown said...

Hey! Thanks for this. However, like shoba said, could you show how to print the contents of the trie. Possibly start from a given node n and print all the words below it?

sony said...

I am generating a trie tree for a set of keyword sets.as soon as the INPUT string matches the keyword in the tree it should return the index of th e file containing that keyword.
one file may contain many keywords.
so i need to get the file index as soon as string match is found ..is there any method to have an index(FILE INDEX) for the end node(*). if soo can a set of nodes have same index ??
Thank you :)

Partha said...

hi, ur presentation is really very useful for beginners.i have some queries about Radix tree, can u please send me ur email id , thanks - partha. my email id is j.parthasarathy@gmail.com