我如何摆脱这个简单的 BST 递归实现中的警告
How do I get rid of the warning in this simple recursive implementation of BST
我正在尝试用 C++ 实现 DS,这里是具有插入和搜索功能的二叉搜索树的简单实现 Class。代码编译并根据需要给出输出。
codereview 上有人指出搜索功能给出了警告,搜索功能中的代码被破坏了。警告类似于 'not all control paths have a return statement' 但我认为这就是递归函数的样子。警告是一个问题吗?我该如何摆脱它?另外,代码是如何破解的?谢谢。
#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;
}
此功能搜索return这些路径中没有任何内容
else
this->left->Search(data);
和
else
this->right->Search(data);
你必须写
else
return this->left->Search(data);
和
else
return this->right->Search(data);
函数可以用一个return语句定义如下
bool Search( int data ) const
{
return ( this->data == data ) ||
( this->data >= data ? this->left && this->left->Search( data )
: this->right && this->right->Search( data ) );
}
实际条件
this->data >= data
可以代替
this->data > data
我正在尝试用 C++ 实现 DS,这里是具有插入和搜索功能的二叉搜索树的简单实现 Class。代码编译并根据需要给出输出。
codereview 上有人指出搜索功能给出了警告,搜索功能中的代码被破坏了。警告类似于 'not all control paths have a return statement' 但我认为这就是递归函数的样子。警告是一个问题吗?我该如何摆脱它?另外,代码是如何破解的?谢谢。
#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;
}
此功能搜索return这些路径中没有任何内容
else
this->left->Search(data);
和
else
this->right->Search(data);
你必须写
else
return this->left->Search(data);
和
else
return this->right->Search(data);
函数可以用一个return语句定义如下
bool Search( int data ) const
{
return ( this->data == data ) ||
( this->data >= data ? this->left && this->left->Search( data )
: this->right && this->right->Search( data ) );
}
实际条件
this->data >= data
可以代替
this->data > data