C# BST 搜索方法实现,"Not all code paths return a value"
C# BST search method implementation, "Not all code paths return a value"
我正在尝试在 C# 中实现二叉搜索树的搜索方法。我选择递归而不是迭代地进行。该方法基本上采用密钥(在本例中为 "item")和树(或子树)的根节点开始检查。 else if 子句中肯定有问题,但我无法查明。任何帮助将不胜感激。干杯!
public bool Search(int item, TreeNode searchRoot){
if (searchRoot != null) {
if (item == searchRoot.GetItem ()) {
return true;
} else if (item < searchRoot.GetItem ()) {
Search (item, searchRoot.GetLeftNode ());
} else if (item > searchRoot.GetItem ()) {
Search (item, searchRoot.GetRightNode ());
}
} else {
return false;
}
}
public bool Search(int item, TreeNode searchRoot){
if (searchRoot != null) {
if (item == searchRoot.GetItem ()) {
return true;
} else if (item < searchRoot.GetItem ()) {
return Search (item, searchRoot.GetLeftNode ());
} else if (item > searchRoot.GetItem ()) {
return Search (item, searchRoot.GetRightNode ());
}
} else {
return false;
}
}
这应该可以修复您的代码。您需要为递归调用添加 return
。并且,return 在第一个 if
中满足所有条件。将最后一个 else-if
更改为 else
应该可以正常工作。
public bool Search(int item, TreeNode searchRoot)
{
if (searchRoot != null)
{
if (item == searchRoot.GetItem ())
return true;
else if (item < searchRoot.GetItem ())
return Search (item, searchRoot.GetLeftNode ());
else
return Search (item, searchRoot.GetRightNode ());
}
else
return false;
}
我正在尝试在 C# 中实现二叉搜索树的搜索方法。我选择递归而不是迭代地进行。该方法基本上采用密钥(在本例中为 "item")和树(或子树)的根节点开始检查。 else if 子句中肯定有问题,但我无法查明。任何帮助将不胜感激。干杯!
public bool Search(int item, TreeNode searchRoot){
if (searchRoot != null) {
if (item == searchRoot.GetItem ()) {
return true;
} else if (item < searchRoot.GetItem ()) {
Search (item, searchRoot.GetLeftNode ());
} else if (item > searchRoot.GetItem ()) {
Search (item, searchRoot.GetRightNode ());
}
} else {
return false;
}
}
public bool Search(int item, TreeNode searchRoot){
if (searchRoot != null) {
if (item == searchRoot.GetItem ()) {
return true;
} else if (item < searchRoot.GetItem ()) {
return Search (item, searchRoot.GetLeftNode ());
} else if (item > searchRoot.GetItem ()) {
return Search (item, searchRoot.GetRightNode ());
}
} else {
return false;
}
}
这应该可以修复您的代码。您需要为递归调用添加 return
。并且,return 在第一个 if
中满足所有条件。将最后一个 else-if
更改为 else
应该可以正常工作。
public bool Search(int item, TreeNode searchRoot)
{
if (searchRoot != null)
{
if (item == searchRoot.GetItem ())
return true;
else if (item < searchRoot.GetItem ())
return Search (item, searchRoot.GetLeftNode ());
else
return Search (item, searchRoot.GetRightNode ());
}
else
return false;
}