Search
 
SCRIPT & CODE EXAMPLE
 

JAVA

How to implement a Trie data structures in Java?

/*
	A Trie is a special data structure for efficiently
	storing keys in and retrieving them from a dataset
	of strings. 
	Time complexity: see below
	Space complexity: see below
*/
import java.util.*;
class Trie {
	TrieNode root;
	public Trie() {
		root = new TrieNode();
	}
	/**
	 * Inserts a word into the trie.
	 * Let n be the length of the word.
	 * Time complexity: O(n)
	 * Space complexity: O(n)
	 */
	public void insert(String word) {
		TrieNode temp = root;
		for (char letter : word.toCharArray()) {
			if (!temp.children.containsKey(letter)) {
				temp.children.put(letter, new TrieNode());
			}
			temp = temp.children.get(letter);
		}
		temp.endOfWord = true;
	}
	/**
	 * Checks if the word is in the trie.
	 * Let n be the length of the word.
	 * Time complexity: O(n)
	 * Space complexity: O(1)
	 */
	public boolean search(String word) {
		TrieNode temp = root;

		for (char letter : word.toCharArray()) {
			if (temp.children.containsKey(letter)) {
				temp = temp.children.get(letter);
			} else {
				return false;
			}
		}
		return temp.endOfWord;
	}

	/**
	 * Checks if there is any word in the trie that starts with the
	 * given prefix.
	 * Let n be the length of the word.
	 * Time complexity: O(n)
	 * Space complexity: O(1)
	 */
	public boolean startsWith(String prefix) {
		TrieNode temp = root;

		for (char letter : prefix.toCharArray()) {
			if (temp.children.containsKey(letter)) {
				temp = temp.children.get(letter);
			} else {
				return false;
			}
		}

		return true;
	}

	public static void main(String[] args) {
		String word = "Trie";
		Trie trie = new Trie();
		trie.insert(word);
		boolean wordFound = trie.search(word);
		System.out.println(wordFound); // True
		boolean prefixFound = trie.startsWith("Tr");
		System.out.println(prefixFound); // True
	}
}

class TrieNode {
	boolean endOfWord;
	Map<Character, TrieNode> children;

	public TrieNode() {
		endOfWord = false;
		children = new HashMap<>();
	}
}
Comment

PREVIOUS NEXT
Code Example
Java :: import android.support.v4.media.app.NotificationCompat.MediaStyle; 
Java :: recyclerview snaphelper callbacks android 
Java :: java parse boolean to string 
Java :: how to reverse order of arraylist 
Java :: @SpringBootApplication 
Java :: how to create progress dialog programmatically in android 
Java :: java import swing 
Java :: java check ipv6 with regex 
Java :: set fontcolor of jframe java 
Java :: reading in lines from a file java 
Java :: keypressed java space 
Java :: javafx how to get the selected index of the seleceted elment in listview 
Java :: java string join arraylist 
Java :: set icon to fab programmatically in android studio 
Java :: How to add negative random numbers in java 
Java :: textview set text bold programmatically 
Java :: convert string to double android studio 
Java :: android parse time 
Java :: admost track purchase 
Java :: spring boot post request response empty body 
Java :: textarea user select disable java swing 
Java :: protocollib onenable 
Java :: localdatetime now + hours 
Java :: cast double to string java 
Java :: Youtube video thumbnail not load in android 11 or above 
Java :: Panel Slider for java swing 
Java :: get id of html tag by class 
Java :: arrange item center android studio linear layout 
Java :: java int to binary string 
Java :: character.isalphanumeric java 
ADD CONTENT
Topic
Content
Source link
Name
7+8 =