c# BST搜索方法实现,“并非所有代码路径都返回一个值”
本文关键字:返回 路径 一个 代码 实现 方法 搜索 BST | 更新日期: 2023-09-27 18:15:47
我正在尝试在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;
}
}
这会修复你的代码。您需要为递归调用添加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;
}
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;
}
}