【问题标题】:Binary search tree in java, booleanjava中的二叉搜索树,布尔值
【发布时间】:2015-05-22 11:51:05
【问题描述】:

在这段代码中,我不理解这一行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;
}

谢谢

【问题讨论】:

    标签: java boolean


    【解决方案1】:

    loEs 将被分配一个取决于两个条件的布尔值:

    • actual.left == null
    • actual.right == null

    由于操作数是 &&,actual.left == null 和 actual.right == null 都必须为真才能使 loE 为真。

    基本上有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】:

      loEs = (actual.left == null &amp;&amp; actual.right == null); 行将布尔值分配给字段loEs。表达式(actual.left == null &amp;&amp; actual.right == null) 是一个返回truefalse 的测试。

      相当于:

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

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

      【讨论】:

      • 啊好吧,所以我们可以把 if (res==0 && actual.left == null && actual.right == null) loEs = true; ?
      • 是的,完全正确。但这会迫使你写一个“else { loEs = false }”,而在这里你可以在一行中指定真或假。
      猜你喜欢
      • 1970-01-01
      • 2019-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多