这可以写成这样;
public boolean check(BSTNode t,String key) {
return
t.word.equals(key) || check(t.left,key) || check(t.right,key)
}
或更详细地说;
public boolean check(BSTNode t,String key) {
if (t.word.equals(key)) return true;
if (check(t.left,key)) return true;
if (check(t.right,key)) return true;
return false;
}
因为return
报表功能停止执行,你不需要很多的else
声明。
编辑:
您还必须检查你的BSTNode不为空,或者当你到达树的最后,你会得到空指针异常。这可能在函数的开始做,或之前内部递归调用check
:
public boolean check(BSTNode t,String key) {
if (t == null) return false;
if (t.word.equals(key)) return true;
if (check(t.left,key)) return true;
if (check(t.right,key)) return true;
return false;
}
;或
public boolean check(BSTNode t,String key) {
if (t.word.equals(key)) return true;
if (t.left != null && check(t.left,key)) return true;
if (t.right != null && check(t.right,key)) return true;
return false;
}
我已编辑您的标签。请确保选择符合问题的标签,而不仅仅是出现在您的问题中的单词。例如,[tag:binary]标签与二叉树无关。这有助于在可以回答问题的人面前提出问题。我还添加了[tag:java]标记,因为我相信你正在使用Java。现在堆栈溢出可以正确地突出显示你的代码。如果这是错误的语言,请更改它。 – Chris