在此代码中,我不承担此行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;
}
由于
答案 0 :(得分:0)
将为loE分配一个取决于两个条件的布尔值:
由于操作数是&amp;&amp;,所以real.left == null AND actual.right == null必须为true才能使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
答案 1 :(得分:0)
行loEs = (actual.left == null && actual.right == null);
为字段loEs
分配一个布尔值。表达式(actual.left == null && actual.right == null)
是一个返回true
或false
。
相当于:
if (actual.left == null && actual.right == null) {
loEs = true;
} else {
loEs = false;
}
因此,如果actual.left
等于null
而actual.right
等于null
,则loEs
字段等于true
。这是该字段等于true
的唯一情况。