【发布时间】:2019-03-11 12:18:49
【问题描述】:
我有一个类 TreeNode 如下所示:
class TreeNode {
int value;
TreeNode left;
TreeNode right;
public TreeNode(int x) {
value = x;
}
我想编写一个递归方法 contains(int i),如果 i 是树中节点的值,则返回 true,否则返回 false。
根据我的理解,二叉树不一定是有序的,所以我不应该将当前节点的值与我们正在搜索的值进行比较。因此我写了以下方法:
public boolean contains(int i) {
if (value == x) {
return true;
} else {
if (left != null) {
return left.find(i);
}
if (right != null) {
return right.find(i);
}
}
return false;
}
我的想法是它会检查当前节点的值是否等于我们正在搜索的值,如果不等于,那么它应该递归调用左右节点的方法,如果它们不为空,否则该方法将返回false。
如果我们正在搜索与树左侧节点对应的值,此方法最终返回 true,但是一旦我们搜索超出此值(向右)的值,它将返回 false。我已经为此思考了好几个小时,我确信有一个相对简单的解决方案,但我似乎无法解决。
【问题讨论】: