public List<String> findWords(char[][] board, String[] words) {
        Trie t = new Trie();
        for (String word : words) {
            t.insert(word);
        }
        StringBuffer buff = new StringBuffer();
        Set<String> result = new HashSet<>();
        Set<Integer> visited = new HashSet<>();
        for (int i = 0; i < board.length; i++) {
            for (int j = 0; j < board[i].length; j++) {
                findWordsUtil(board, t, i, j, buff, visited, result, board[0].length);
            }
        }
        return new ArrayList<>(result);
    }
Date 03/04/2016
@author Tushar Roy

Search for dictionary words in the board.
Idea is to use trie for the dictionary which keeps search
very efficient.

https://leetcode.com/problems/word-search-ii/
src/com/interview/graph/Boggle.java