【问题标题】:Java method giving unexpected return给出意外返回的 Java 方法
【发布时间】:2019-03-23 08:06:12
【问题描述】:

我正在研究 Java 二进制搜索树,我正在尝试在 find() 中使用方法 findHelp()。我期望返回值为rt.getValue()(这是C2-112,因为我在返回之前打印出来),但在帮助方法中打印出findHelp() 返回null

我在网上找不到类似的错误,谁能帮我弄清楚,或者给一个类似问题的链接?

这是我的代码

private E findHelp(BinaryNode<Key, E> rt, Key k) {
        int compare = k.compareTo(rt.getKey()); 
        if (compare==0) {
            System.out.println(rt.getValue()); // I'm getting C2-112 here 
            return rt.getValue(); // so I expect a return of C2-112
        } else if (compare >0 ) {
            if (rt.getRight() == null) {
                return null;
            } else {
                findHelp(rt.getRight(), k);
            }
        } else {
            if (rt.getLeft() == null) {
                return null;
            } else {
                findHelp(rt.getLeft(), k);
            }
        }
        return null;
    } // 

public E find(Key k) {
        E tmp = findHelp(root, k); 
        System.out.println(tmp); // this prints null, not C2-112
        return findHelp(root, k); // and so I return null
    }

【问题讨论】:

  • 你递归调用findHelp,调用的中间返回值“无关紧要”,你得到的返回值是对findHelp的第一个/最外层调用返回的值。

标签: java class methods return binary-tree


【解决方案1】:

在每个 findHelp(...) 之前添加一个 return

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多