为什么在此函数中返回false

Kay*_*Kay 0 java

在下面的程序中,我将变量设置thtrue第二个if语句中的变量.我很好奇为什么它后来又回来了false.

public boolean nodeExist(TreeNode Tree, T value){

    boolean th = false;

    if(Tree.getValue()!= null){

        if(value == Tree.getValue()){

            th = true;

        }else{

            if(value.compareTo((T) Tree.getValue()) < 0){

                nodeExist(Tree.getLeft(), value);

            }else{

                nodeExist(Tree.getRight(), value);
            }

        }

    }else{

        th = false;

    }

    return th;

}
Run Code Online (Sandbox Code Playgroud)

Joh*_*itb 5

您可能会查看设置th为true 的递归调用.但是当该调用返回其调用者时, th仍处于false状态,然后返回.您需要分配递归被调用者的结果:

        if(value.compareTo((T) Tree.getValue()) < 0){

            th = nodeExist(Tree.getLeft(), value);

        }else{

            th = nodeExist(Tree.getRight(), value);
        }
Run Code Online (Sandbox Code Playgroud)