【发布时间】:2018-04-08 23:40:17
【问题描述】:
所以我需要计算一个 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
}
但是当我尝试像这样在 main 中打印结果时:
System.out.println("Average Depth : "+tree.totalDepth(tree.root,0)/10000);
我得到一个堆栈溢出错误
请帮帮我
【问题讨论】:
-
放入大量调试。从函数开头的一些开始,显示有关当前节点的一些内容。将返回表达式分开,这样您就可以在使用
node.left的调用之前放置一个调试打印,并在使用node.right的调用之前再次放置一个调试打印。这应该说明它为什么呈螺旋式上升。发布显示您如何创建tree的代码可能会很有用。 -
树中有多少个节点?此外,树的构造是否健壮,即没有循环引用?
标签: java recursion tree binary-search-tree stack-overflow