Java二进制搜索树 - size()方法溢出

时间:2018-02-25 11:15:06

标签: java size binary-search-tree

我试图为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());

    }

然而,这是返回堆栈溢出错误,我不知道为什么。我出错的任何想法?非常感谢。

1 个答案:

答案 0 :(得分:0)

正如评论中所提到的,您的方法int size(Node node)采用名为node的参数,但在方法体中,它不使用node - 而是使用{ {1}}。这不起作用,有一个你需要对参数进行操作的递归方法。

root方法中的root方法中的每个字词int size(Node node)替换为node,它将起作用。