有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java中的二叉搜索树,布尔

在这段代码中,我不理解这一行loEs = (actual.left == null && actual.right == null); 这是如何返回loEs=true的

public boolean isLeaf(E e) { 
   return isLeaf(e, this.root); 
}
protected boolean isLeaf(E e, NBT<E> actual) {
   boolean loEs = false;
   if (actual != null) {
       int res = actual.data.compareTo(e); 
       if (res == 0)      loEs = (actual.left == null && actual.right == null);
       else if (res > 0)  loEs = isLeaf(e, actual.left);
       else                loEs = isLeaf(e, actual.right); 
   }
   return loEs;
}

谢谢


共 (2) 个答案

  1. # 1 楼答案

    LOE将被分配一个布尔值,该布尔值取决于两个条件:

    • 实际的。左==null
    • 实际的。右==null

    因为操作数是&&;,都是真实的。left==null和实际值。right==null必须为true才能使LOE为true

    基本上有4种可能性:

    actual.left == null AND actual.right == null : loEs == true
    actual.left != null AND actual.right == null : loEs == false
    actual.left == null AND actual.right != null : loEs = false
    actual.left != null AND actual.right != null : loEs = false
    
  2. # 2 楼答案

    loEs = (actual.left == null && actual.right == null);为字段loEs指定一个布尔值。表达式(actual.left == null && actual.right == null)是返回truefalse的测试

    这相当于:

    if (actual.left == null && actual.right == null) {
        loEs = true;
    } else {
        loEs = false;
    }
    

    因此,如果actual.left等于null并且actual.right等于null,那么loEs字段等于true。这是字段等于true的唯一情况