思路:
通过 取出队首元素,将它的左子树与右子树的值加入到aList中,并加他们入队。
alist一次只加入该层的所有元素,这个是通过time来控制的。
将加入alist的一层所有元素进行首尾依次进行判定。
代码如下:
public class Solution {
public boolean isSymmetric(TreeNode root) {if(root==null||(root.left==null&&root.right==null))
return true;
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()){
List <Integer>aList=new ArrayList<>();
int time=queue.size();
for(int i=0; i<time;i++){
TreeNode currentNode=queue.poll();
if(currentNode.left!=null){
queue.offer(currentNode.left);
aList.add(currentNode.left.val);
}else {
aList.add(0);
}
if(currentNode.right!=null){
queue.offer(currentNode.right);
aList.add(currentNode.right.val);
}else {
aList.add(0);
}
}
//开始验证
int l=aList.size();
for(int i=0;i<l/2;i++){
if(aList.get(i)!=aList.get(l-1-i)){
return false;
}
}
}
return true;
}
}