I écrit le préfixe suivant Trie:DFS sur chaîne Trie (préfixe)
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;
}
}
Je voudrais ajouter la méthode DFS afin de trouver le premier nœud qui a plus de 1 enfant (donc il va me montrer le préfixe commun le plus long).
J'ai écrit ce code:
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");
}
}
Mais il ne fonctionne pas. Qu'est-ce que je fais mal?
2 bords ou enfants? –
2 ou plusieurs enfants. De cette façon, je saurai que jusqu'à ce que c'est le plus long préfixe commun – Dejell
S'il vous plaît clarifier votre question, cherchez-vous le plus long préfixe commun de toutes les entrées qui composent l'arbre de préfixe? Si c'est le cas, children.size()> 2 n'est pas suffisant. Ou cherchez-vous le plus long préfixe commun de deux chaînes? – Faraway