我試圖通過首先構建一個數組(inorder)來平衡BST,然後從我的數組中重建整個樹。從一個二叉搜索樹遞歸構建數組時,StackOverflowError
我:
public void toArray(E[] a) {
toArray(root, a, 0);
}
/*
* Adds all elements from the tree rooted at n in inorder to the array a
* starting at a[index].
* Returns the index of the last inserted element + 1 (the first empty
* position in a).
*/
private int toArray(BinaryNode<E> node, E[] a, int index) {
if (node.left != null) {
index = toArray(node, a, index);
}
a[index] = node.element;
index++;
if (node.right != null) {
index = toArray(node, a, index);
}
return index;
}
和:
bst.toArray(b);
我希望這將建立序的數組。但我得到StackOverflowError。據我所知,這可能是由於無限遞歸,但我真的看不到它。
錯誤發生在這條線:
index = toArray(node, a, index);
讚賞任何幫助。
關閉原因=)抱歉浪費你的時間。謝謝! – evading 2010-10-31 13:00:33
@refuser - 如果這回答你的問題,「接受」它。 – 2010-10-31 13:08:07
想過我了嗎?我點擊了複選標記,並且說等了七分鐘,所以我再次點擊它,它變成綠色。我錯過了什麼? – evading 2010-10-31 13:52:18