2

DS を C++ で実装しようとしています。これは、挿入機能と検索機能を備えたバイナリ検索ツリー クラスの簡単な実装です。コードがコンパイルされ、必要に応じて出力が得られます。
codereview の誰かが、検索機能で警告が表示され、検索機能のコードが壊れていると指摘しました。警告は「すべての制御パスに return ステートメントがあるわけではありません」に似ていますが、再帰関数はそのように見えると思いました。警告は問題ですか?どうすればそれを取り除くことができますか? また、コードはどのように壊れていますか?ありがとうございました。

#include <stdio.h>
#include <iostream>

class BstNode{
int data;
BstNode* left;
BstNode* right;

public:
BstNode(int data)
{
    this->data = data;
    this->left = NULL;
    this->right = NULL;
}
~BstNode();

void Insert(int data)
{
    if(this->data >= data)
    {
        if (this->left == NULL)
            this->left = new BstNode(data);
        else 
            this->left->Insert(data);
    }
    else
    {
        if (this->right == NULL)
            this->right = new BstNode(data);
        else 
            this->right->Insert(data);
    }
}

bool Search(int data)
{
    if(this->data == data)
        return true;
    else if(this->data >= data)
    {
        if(this->left == NULL)
            return false;
        else
            this->left->Search(data);
    }
    else
    {
        if(this->right == NULL)
            return false;
        else
            this->right->Search(data);
    }

}
};

int main()
{
BstNode* ptr_root = new BstNode(15);
ptr_root->Insert(10);
ptr_root->Insert(16);
int num;
std::cout<<"Enter the number: \n";
std::cin>> num;
if (ptr_root->Search(num))
    std::cout<<"Found\n";
else
    std::cout<<"Not Found\n";

return 0;
}
4

1 に答える 1