私はプロジェクトに取り組んで私のプロジェクトで私はツリーを構築する必要があります。樹木には約64000枚の葉があります。 Unfortunetly私はstackoverflowエラーに実行し続けて、私はこの時点で何をすべきか分かりません。私は私の再帰メソッドを間違って書くか、エラーの回避策がありますか?コンストラクタで コード:ビルドと巨大な木とstackoverflowエラーで盗まれている
for(int i = 0; i < wordHolder.size(); i++) {
add(i);
}
方法追加:ノードが2つのデータ構造が含まれている標準のノードである
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;
}
:
public void add(int i){
mainTreeNode = treeSetup(mainTreeNode, 0, wordHolder.get(i), countHolder.get(i));
}
、ツリーを設定再帰的な方法を(リストと文字列)。アイデアは、ノードがそのリストに含まれるものに基づいてスポットに置かれるということです。また、ツリーの各レベルは、リスト(KDツリーのような)とは異なる値に基づいてチェックされるため、letterCount変数が使用されます。問題は、 "if"文に "="記号があるかどうかに基づいて変化します。両方の「if文」から「=」記号を削除すると、問題はなくなりますが、莫大な量の精度が失われます。「助けてください」
しかし、今私はそのスタックオーバーフローの問題を解決するためのtheresですか? –
また、kdツリーを使用する必要があります。問題はもっと大きく、kdツリーはそれを解決する方法です(その類似性に基づいています) –