/*
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
import java.util.Queue;
import java.util.LinkedList;
import java.util.ArrayList;
public class Solution {
boolean isSymmetrical(TreeNode pRoot)
{
if(pRoot == null) return true;
if(pRoot.left == null && pRoot.right == null) return true; // 只有一个根节点
Queue<TreeNode> queue = new LinkedList<>();
queue.add(pRoot);
while(!queue.isEmpty()){
ArrayList<TreeNode> list = new ArrayList<>();
while(!queue.isEmpty()){
list.add(queue.element());
queue.poll();
}
int i,j;
for(i=0,j=list.size()-1;i<=j;i++,j--){
if(list.get(i) == null && list.get(j) == null){
continue;
}else if(list.get(i)==null && list.get(j)!=null){
return false;
}else if(list.get(i) != null && list.get(j) == null){
return false;
}else if(list.get(i).val != list.get(j).val ){
return false;
}
queue.add(list.get(i).left);
queue.add(list.get(i).right);
}
while(i<list.size()){
if(list.get(i) != null){
queue.add(list.get(i).left);
queue.add(list.get(i).right);
}
i++;
}
}
return true;
}
}
使用广度优先遍历的思想。