为什么这个二叉树大小的递归函数会给出堆栈溢出错误?

时间:2017-07-23 14:40:56

标签: java tree

即使对于具有单个节点的树,此代码也会出现堆栈溢出错误。

int size(Node node)
    {
        if(root==null)
            return 0;
        return (1+size(root.left)+size(root.right));
    }

1 个答案:

答案 0 :(得分:4)

因为你总是在你的函数中使用root,它似乎是该类的一个属性,所以你一次又一次地在同一个元素上调用该函数

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

将解决;)

因此您将调用此方法: int s = size(root);