Buttercola: EA: Print a Trie
Given a Trie, print all words in the Trie
Read full article from Buttercola: EA: Print a Trie
Given a Trie, print all words in the Trie
class TrieNode { // Initialize your data structure here. TrieNode[] children; boolean leaf; public TrieNode() { children = new TrieNode[26]; }}public class Solution { private TrieNode root; public Solution() { root = new TrieNode(); } // Inserts a word into the trie. public void insert(String word) { if (word == null || word.length() == 0) { return; } TrieNode p = root; for (int i = 0; i < word.length(); i++) { char c = word.charAt(i); if (p.children[c - 'a'] != null) { p = p.children[c - 'a']; } else { p.children[c - 'a'] = new TrieNode(); p = p.children[c - 'a']; } } p.leaf = true; } // Returns if the word is in the trie. public boolean search(String word) { if (word == null || word.length() == 0) { return false; } TrieNode p = root; for (int i = 0; i < word.length(); i++) { char c = word.charAt(i); if (p.children[c - 'a'] == null) { return false; } p = p.children[c - 'a']; } if (p.leaf) { return true; } else { return false; } } // Returns if there is any word in the trie // that starts with the given prefix. public boolean startsWith(String word) { if (word == null || word.length() == 0) { return false; } TrieNode p = root; for (int i = 0; i < word.length(); i++) { char c = word.charAt(i); if (p.children[c - 'a'] == null) { return false; } p = p.children[c - 'a']; } return true; } public void printTrie() { TrieNode p = root; StringBuffer sb = new StringBuffer(); printTrieHelper(p, sb); } private void printTrieHelper(TrieNode p, StringBuffer sb) { if (p == null) { return; } if (p.leaf) { System.out.println(sb.toString()); } for (int i = 0; i < 26; i++) { if (p.children[i] != null) { char c = (char) (i + 'a'); sb.append(c); printTrieHelper(p.children[i], sb); sb.deleteCharAt(sb.length() - 1); } } } public static void main(String[] args) { Solution sol = new Solution(); sol.insert("abcd"); sol.insert("abc"); sol.insert("abd"); sol.insert("ad"); sol.printTrie(); }}