这是我的 find() 方法:
public boolean find(int key) {
    BinTreeNode node = findHelper(key, root);
    if (node == null) {
        return false;
    } else {
        return true;
    }
}    
private BinTreeNode findHelper(int key, BinTreeNode node) {
    if (node == null) {
        return null;
    }    
    if(key == node.item) {
        return node;
    }
    else if(key < node.item) {
        return findHelper(key,node.leftChild);
    }
    else {
        return findHelper(key,node.rightChild);
    }
}
这是我修改后的代码。它仍然不起作用:(
public boolean searchNum(BinTreeNode node, int num) {
    if(node == null) {
        return false;
    }
    else {
        int result = num - node.item;
        if(find(result)) {
            return true; 
        }
        if(node.leftChild != null) {
            searchNum(node.leftChild, num);
        }
       if(node.rightChild != null) {
            searchNum(node.rightChild, num);
        } 
       return false;
    }
}
我正在尝试查找给定数字是否等于二叉搜索树中任意 2 个数字的总和。我知道错误在哪里,但我不知道如何纠正它。
以下几行
if(find(result)) {
return true; 
}
应该终止该方法,因为一旦我得到一个真实的,这就是我所需要的,我应该将值返回给调用函数。但是,递归继续执行,最终返回最后一次递归调用的值。请帮忙。
public boolean searchNum(BinTreeNode node, int num) {
    if(node == null) {
        return false;
    }
    else {
        if(node.leftChild != null) {
            searchNum(node.leftChild, num);
        }
        int result = num - node.item;
        System.out.println(node.item);
        //I have a separate find() which finds if the key is in the tree
        if(find(result)) {
            return true; 
        }
       if(node.rightChild != null) {
            searchNum(node.rightChild, num);
        } 
       return false;
    }
}
}