Recursion 使用递归c+计算BST中的节点数+;
我正在尝试使用递归查找BST中的节点数。这是我的密码Recursion 使用递归c+计算BST中的节点数+;,recursion,binary-search-tree,Recursion,Binary Search Tree,我正在尝试使用递归查找BST中的节点数。这是我的密码 struct Node{ int key; struct Node* left; struct Node* right; Node(){ int key = 0; struct Node* left = nullptr; struct Node* right = nullptr; } }; src_root是树的根节点的地址 int BST::coun
struct Node{
int key;
struct Node* left;
struct Node* right;
Node(){
int key = 0;
struct Node* left = nullptr;
struct Node* right = nullptr;
}
};
src_root是树的根节点的地址
int BST::countNodes(Node* src_root, int sum){
if((src_root==root && src_root==nullptr) || src_root==nullptr)
return 0;
else if(src_root->left==nullptr || src_root->right==nullptr)
return sum;
return countNodes(src_root->left, sum + 1) + countNodes(src_root->right, sum + 1) + 1;
}
然而,我的代码似乎只有在有3个节点时才起作用。任何大于3的答案都是错误的。请帮我找出它的毛病。谢谢 我很久没有用C/C++做过任何东西了,所以如果有语法错误的话
int BST::countNodes(Node *scr_root)
{
if (scr_root == null) return 0;
return 1 + countNodes(scr_root->left) + countNodes(scr_root->right);
}
我认为这样就可以了。在实现过程中,您有几个逻辑和结构问题。Casperah给了你一个“干净”的答案,我想你已经在网上找到了(如果你还没有做过那项研究,你就不应该发布你的问题)。因此,你要寻找的不是别人的解决方案,而是如何解决自己的问题