Я написал следующий префикс:
class TrieNode {
char letter;
HashMap<Character,TrieNode> children;
boolean fullWord;
TrieNode(char letter) {
this.letter = letter;
children = new HashMap<Character, TrieNode>();
this.fullWord = false;
}
}
class Tree{
static TrieNode createTree() {
return (new TrieNode('\0'));
}
static void insertWord(TrieNode root, String word) {
int l = word.length();
char[] letters = word.toCharArray();
TrieNode curNode = root;
for (int i = 0; i < l; i++) {
if (!curNode.children.containsKey(letters[i]))
curNode.children.put(letters[i], new TrieNode(letters[i]));
curNode = curNode.children.get(letters[i]);
}
curNode.fullWord = true;
}
}
Я хотел бы добавить метод DFS, чтобы найти первый узел, который имеет более 1 дочернего элемента (поэтому он покажет мне самый длинный общий префикс).
Я написал этот код:
static void DFS(TrieNode node) {
for (TrieNode tn: node.children.values()){
DFS(tn);
if (node.children.size()>2)
System.out.println("found the first vertex");
}
}
Но это не работает. Что я делаю неправильно?