我有一个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我已经花了好几个小时来思考这个问题,我确信有一个相对来说微不足道的解决方案,但我似乎没办法做到。
最佳答案
像这样的:
public boolean contains(int i) {
return value == i ||
left != null && left.contains(i) ||
right != null && right.contains(i);
}
关于algorithm - 查找二进制树中是否包含值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55101729/