在Java中查找BST的大小

时间:2015-01-21 14:36:37

标签: java binary-search-tree

我正在尝试使用这段代码找到BST的大小。

public static void main(String[] args) {

        BST bst = new BST();
        int [] arr = {12, 15,7,3,81, 9};
        for (int i = 0; i <arr.length; i++) {
            bst.add(arr[i]);
        }

        System.out.print(size(bst.root));

    }
    public static int size(Node node){
        if (node != null) {
            return size(node.left) +1 + size(node.right) + 1;
        }else
            return 0;
    }

我得到的答案是12,这是第一个元素。我做错了什么?

2 个答案:

答案 0 :(得分:4)

你得到12的原因是你的代码返回树中元素数量的两倍(其中有6个元素)。 12也恰好是第一个元素的事实纯属巧合。

return语句应为:

return 1 + size(node.left) + size(node.right);

即。此节点加上左子树的大小加上右子树的大小。

你拥有的第二个+1是错误的。

答案 1 :(得分:2)

你正在重复计算。这里只需要一个+1