【发布时间】:2020-10-30 06:20:18
【问题描述】:
尝试在链接的 BST 中递归查找大小(对象总数)。得到奇怪的错误回报,不完全确定原因。
private int size(BinaryTreeNode<T> root)
{
if (root == null) // empty tree
return 0;
if (root.getRight() == null && root.getLeft() == null) // base case, only root node exists
return 1;
else if (root.getRight() == null && root.getLeft() != null) // only left node exists
return size(root.getLeft()) + 1;
else if (root.getRight() != null && root.getLeft() == null) // only right node exists
return size(root.getRight()) + 1;
else
return size(root.getRight()) + size(root.getLeft()) + 1; // right and left nodes exist
}
当找到树的大小时:
< 33 >
1 > < 67 >
12 > 1 80
13
我得到 1 作为返回大小而不是 6。
【问题讨论】:
-
您能分享一下您构建树的方式吗?
-
它可能不会帮助您调试它,但您不能删除大部分该方法并仅使用
if(root == null)基本案例,以及您的实现的最终案例吗? -
好点,一开始就应该认识到这一点。这巩固了很多,谢谢!
-
@ShashankGarg 不幸的是没有。这是一个课程项目,所以定义树构造方式的类比我目前的能力要好一点。我能做的最好的就是发布整个文件。
标签: java data-structures binary-tree binary-search-tree