使用q != null
和!q.isEmpty()
有什么区别?
当我在以下代码中使用q!= null时,将不会对其进行编译。但是!q.isEmpty()效果很好。
java
Queue<TreeNode[]> q=new LinkedList<>();
q.add(new TreeNode[]{t1, t2});
while(q!=null){ // is not complied
TreeNode[] t=q.remove();
if(t[0]==null || t[1]==null) continue;
t[0].val+=t[1].val;
if(t[0].left==null) t[0].left=t[1].left;
else q.add(new TreeNode[]{t[0].left, t[1].left});
if(t[0].right==null) t[0].right=t[1].right;
else q.add(new TreeNode[]{t[0].right, t[1].right});
}
答案 0 :(得分:1)
'q'永远不会为null,因为您已经用new LinkedList
实例化了它,因此将导致无限循环。因此,在您的示例中,您必须检查列表是否为空。但是应该编译