我试图为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());
}
然而,这是返回堆栈溢出错误,我不知道为什么。我出错的任何想法?非常感谢。
答案 0 :(得分:0)
正如评论中所提到的,您的方法int size(Node node)
采用名为node
的参数,但在方法体中,它不使用node
- 而是使用{ {1}}。这不起作用,有一个你需要对参数进行操作的递归方法。
将root
方法中的root
方法中的每个字词int size(Node node)
替换为node
,它将起作用。