/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public boolean child(List<TreeNode> al,boolean flag){
boolean ret=true;
if (flag){
ret=true;
for(TreeNode ax:al)ret=ret&&ax==null;
return ret;
}
ret=true;
List<TreeNode> cc=new ArrayList<>();
for(TreeNode ax:al)if(ax!=null&&ret){cc.add(ax.left);cc.add(ax.right);}
else if(ax!=null&&ret==false)return false;
else if(ax==null&&ret)ret=false;
return child(cc,ret==false);
}
public boolean isCompleteTree(TreeNode root) {
List<TreeNode> al=new ArrayList<>();
al.add(root.left);
al.add(root.right);
return child(al,false);
}
}