Java 方法给出意外的返回

标签 java class methods return binary-tree

我正在研究 Java 二叉搜索树,并且我正在尝试使用 find() 中的方法 findHelp()。我期望返回值 rt.getValue() (这是 C2-112,因为我在返回之前打印出来),但打印出 findHelp help 方法中的 () 返回 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(...) 之前添加一个 return

关于Java 方法给出意外的返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52875287/

相关文章:

java - 为什么这段代码会抛出异常?

java - 单击时预览图像- Android

c++ - 是否可以返回指向类中声明的结构的指针?

javascript - 如何在流中定义和导入类类型?

java - Eclipse 按字母顺序组织方法

java - 如何在angularJs中生成AES/CBC/PKCS5Padding加密密码

java 。全局JLabels

c++ - 如何在从抽象基派生的类中实现相同的方法?

ios - Swift协议(protocol)方法使用

go - 调用提升函数时出现未定义错误