Java 具有两个相同参数的递归

Java 具有两个相同参数的递归,java,recursion,binary-search-tree,Java,Recursion,Binary Search Tree,我正在研究一种递归方法,它输出二元搜索树中最小的字符串,而二元搜索树中的字符串则相反,但我觉得我完成这项任务的方式做得很糟糕 我有一个驱动程序方法,它将根变量传递两次给递归重载方法。我觉得这不仅令人困惑,而且被认为是糟糕的做法。我两次传递它的原因是为了跟踪原始根变量,这样我就可以将它传递到需要它的搜索方法中。有没有其他方法可以做到这一点,还是我一直坚持下去 相关代码: public String smallRev() { return smallRev(root,root

我正在研究一种递归方法,它输出二元搜索树中最小的字符串,而二元搜索树中的字符串则相反,但我觉得我完成这项任务的方式做得很糟糕

我有一个驱动程序方法,它将根变量传递两次给递归重载方法。我觉得这不仅令人困惑,而且被认为是糟糕的做法。我两次传递它的原因是为了跟踪原始根变量,这样我就可以将它传递到需要它的搜索方法中。有没有其他方法可以做到这一点,还是我一直坚持下去

相关代码:

    public String smallRev() {
        return smallRev(root,root); // <--- Bad practice?
    }

    private static String smallRev(StringNode temproot, StringNode root) {
        String result;
        if (temproot == null) {
            result = "";
        } else if (search(root, revString(temproot.getString()))) { //<-- Used here
            result = temproot.getString();
        } else {
            String left = smallRev(temproot.getLeft(),root); // <-- Here
            String right = smallRev(temproot.getRight(),root); // <-- & Here
            if (!left.equals("")) {
                result = left;
            } else {
                result = right;
            }
        }
        return result;
    }
公共字符串smallRev(){

返回smallRev(根,根);//您只需将方法中的根变量复制到临时变量中即可。无需再传递两次。@svz啊…Duh。这太尴尬了。谢谢。@svz事实上,我认为这行不通,因为我忘记了它会递归地搜索else语句中的左和右节点。真正的根变量需要传递给search声明。