im travaillant sur un projet et dans mon projet, je dois construire un arbre. L'arbre aura environ 64000 feuilles. Malheureusement, je continue à courir dans une erreur de stackoverflow et je n'ai aucune idée de ce qu'il faut faire à ce stade. Ai-je mal écrit ma méthode récursive ou existe-t-il une solution de contournement pour l'erreur? code dans le constructeur:bâtiment et arbre énorme et étant mis sur écoute avec une erreur stackoverflow
for(int i = 0; i < wordHolder.size(); i++) {
add(i);
}
méthode Add:
public void add(int i){
mainTreeNode = treeSetup(mainTreeNode, 0, wordHolder.get(i), countHolder.get(i));
}
et la méthode récursive qui met en place l'arbre:
private TreeNode treeSetup(TreeNode node, int letterCount, String s, List<Integer> i) {
if(letterCount == 26) {
letterCount = 0;
}
if(node == null) {
node = new TreeNode(s,i);
} else if (i.get(letterCount) >= node.test.get(letterCount)) {
node.right = treeSetup(node.right, letterCount++, s, i);
} else if(i.get(letterCount) < node.test.get(letterCount)) {
node.left = treeSetup(node.left, letterCount++, s, i);
}
return node;
}
Le nœud est un nœud standard qui contient 2 structures de données (une liste et une chaîne). L'idée est que le noeud est placé dans un endroit basé sur ce que la liste contient. De plus, chaque niveau de l'arbre est vérifié en fonction d'une valeur différente de la liste (comme un arbre KD), d'où la variable letterCount. le problème semble être dans la ligne
node.right = treeSetup(node.right, letterCount++, s, i);`
mais les changements en fonction de quel que soit « instruction if » a le signe « = ». Si je supprime le signe « = » à la fois « si les déclarations » le problème disparaît, mais je perds une énorme quantité de accuracy.` S'il vous plaît aider
Mais pour moi noway theres pour résoudre ce problème stackoverflow? –
Aussi, je dois utiliser un arbre kd, le problème est beaucoup plus grand et l'arbre kd est le moyen de le résoudre (sa similarité est basée) –