【发布时间】:2020-03-18 09:49:55
【问题描述】:
我需要实现这个递归函数,它将以 BST 为根,并递归计算其中包含两个子节点的节点数,但我不确定我的逻辑是否正确?
我的逻辑是:
- 如果叶子或空,我们返回 0
- 您检查一个节点是否有两个孩子,我们添加一个并在其左右孩子上再次调用
- 否则,如果一个节点没有两个子节点,则在其左右子树上调用而不添加
这是我的函数实现 ps:假设 BinarySearchTree 类中的所有内容都已实现:
int count(BinarySearchTree *root )
{
if(root== nullptr)
{
return 0;
}
if(root->right != nullptr and root->left!= nullptr)
{
return 1+count(root->right)+count(root->left);
}
count(root->right);
count(root->left);
}
【问题讨论】:
-
你真的没有问题,你想知道如何修复你的代码吗?
-
你有什么问题?
-
对不起,我的逻辑是否正确
-
在你暴露的代码中,有一条不归路。 (我相信你的编译器会告诉你同样的。)
-
你能添加一些示例输入和预期输出吗?我对包含或排除子节点计数有点困惑。
标签: c++ algorithm tree binary-search-tree