所以我需要计算一个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错误
请帮帮我
答案 0 :(得分:0)
我相信你认为你正在遍历你的二叉树,但是你不停地在同一节点上连续调用totalDepth
,直到JVM耗尽内存来使用。
我建议您添加打印语句或登录totalDepth
方法,以查看您浏览二叉树的深度,或者您是否正在遍历二叉树。我假设if (node == null)
永远不会计算为true,因此调用堆栈会继续运行,直到内存不足为止。