[英]Java Binary Search Tree - size() method overflow
我正在嘗試為Java二進制搜索樹編寫size()方法。 我看過各種教程,它們為size()方法建議了以下格式:
//Constructor
public BST() {
root = null;
}
// Inner Node class
private static class Node<E> {
protected E element;
protected Node<E> left, right;
protected Node(E elem) {
element = elem;
left = null;
right = null;
}
}
public int size() {
return size(root);
}
int size(Node node)
{
if (root == null) {
return 0;
}
else {
return (size(root.left) + 1 + size(root.right));
}
}
//Main method
public static void main(String[] args) {
BST<String> bag = new BST<String>();
bag.add("Orange");
bag.add("Apple");
bag.add("Pear");
System.out.println(bag.size());
}
但是,這返回了堆棧溢出錯誤,我不確定為什么。 有什么想法我要去哪里嗎? 非常感謝。
正如評論中提到的那樣,您的方法int size(Node node)
帶有一個稱為node
的參數,但是在方法主體中,它不使用node
而是使用root
。 要使用需要對參數進行操作的遞歸方法,這將不起作用。
將int size(Node node)
方法內表達式root
每次出現替換為node
,它將起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.