即時通訊工作的項目和我的項目我必須建立一棵樹。樹將有大約64000葉子。不幸的是我一直運行到一個stackoverflow錯誤,我不知道該怎麼做。我寫錯了遞歸方法嗎?還是有錯誤的解決方法? 代碼在構造:建設和巨大的樹,並與stackoverflow錯誤bug
for(int i = 0; i < wordHolder.size(); i++) {
add(i);
}
添加方法:
public void add(int i){
mainTreeNode = treeSetup(mainTreeNode, 0, wordHolder.get(i), countHolder.get(i));
}
和,設置了樹的遞歸方法:
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;
}
節點是包含2層數據結構標準節點(一個列表和一個字符串)。這個想法是節點根據列表包含的內容放入一個位置。此外,樹中的每個級別都根據與列表不同的值進行檢查(如KD樹),因此是letterCount變量。問題似乎在
node.right = treeSetup(node.right, letterCount++, s, i);`
行,但基於「if語句」具有「=」符號的更改。如果我從兩個「if語句」中刪除「=」符號,問題就消失了,但我失去了大量的準確性。請幫助
但是,現在爲我解決這個stackoverflow問題? –
另外,我必須使用kd樹,問題要大得多,kd樹是解決它的方法(它的基於相似性) –