我的代码用于搜索二叉树以获得相同的值。
对我而言,它正在返回一个值。
任何想法/帮助?
public Boolean ContainsValue (Node<T> tree, int value)
{
if (tree == null)
return false;
if (tree.Data.Equals(value))
return true;
if (value.CompareTo(tree.Data) < 0)
return ContainsValue(tree.Left, value);
if (value.CompareTo(tree.Data) > 0)
return ContainsValue(tree.Right, value);
}
编辑:谢谢,一旦你们都提到了这个问题,我就意识到我做错了什么。 (我现在觉得很傻)
答案 0 :(得分:4)
如果没有条件满足,则需要默认(无条件)返回:
public Boolean ContainsValue (Node<T> tree, int value)
{
if (tree == null)
return false;
if (tree.Data.Equals(value))
return true;
if (value.CompareTo(tree.Data) < 0)
return ContainsValue(tree.Left, value);
if (value.CompareTo(tree.Data) > 0)
return ContainsValue(tree.Right, value);
// here
// return some_value;
// or throw exception
}
我认为您的代码应如下所示:
public bool ContainsValue (Node<T> tree, int value)
{
if (tree == null)
return false;
if (tree.Data.Equals(value))
return true;
if (value.CompareTo(tree.Data) < 0)
return ContainsValue(tree.Left, value);
// thus you already verified case when value is less or equal to data
// you don't need if condition here
return ContainsValue(tree.Right, value);
}
答案 1 :(得分:1)
您需要该方法的默认返回值。您唯一的返回值是在IF语句中,因此编译器会抱怨,即使我们作为人类可以看到至少会执行一个IF语句。