再帰を使用してBST内のノードの数を調べようとしています。ここに私のコードです再帰C++を使用して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::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以上のものは間違った答えを与える。何が問題なのかを教えてください。ありがとう!