计算二叉搜索树的平均深度

时间:2018-04-08 23:40:18

标签: java recursion tree binary-search-tree stack-overflow

所以我需要计算一个BST的平均深度,我在班级BST中有这个功能

int totalDepth(Node node, int depth) 
{
    if(node == null) 
    {
        return 0;
    }

    return depth                              // myself
     + totalDepth(node.left, depth + 1)   // my left subtree
     + totalDepth(node.right, depth + 1); // my right subtree
}

但是当我尝试以这样的方式打印结果时:

System.out.println("Average Depth : "+tree.totalDepth(tree.root,0)/10000);

我收到了stackoverflow错误

请帮帮我

1 个答案:

答案 0 :(得分:0)

我相信你认为你正在遍历你的二叉树,但是你不停地在同一节点上连续调用totalDepth,直到JVM耗尽内存来使用。

我建议您添加打印语句或登录totalDepth方法,以查看您浏览二叉树的深度,或者您是否正在遍历二叉树。我假设if (node == null)永远不会计算为true,因此调用堆栈会继续运行,直到内存不足为止。