题目

方法一:遍历每一层

var isSymmetric = function(root) {
  let arr = [root];
  while(arr.length!==0){
    let height = arr.length;
    let tempArr = [];
    for(let i=0;i<height;i++){
      let shift = arr.shift();
      if(shift.left!==null){
        arr.push(shift.left);
        tempArr.push(shift.left.val);
      }else{
        tempArr.push('null');
      }
      if(shift.right!==null){
        arr.push(shift.right);
        tempArr.push(shift.right.val);
      }else{
        tempArr.push('null');
      }
    }
    if(!reverse(tempArr)){
      return false;
    }
  }
  return true;
};
function reverse(arr){
  return arr.join('-')===arr.reverse().join('-');
}

方法二:递归

var isSymmetric = function(root) {
  function jude(l1,l2){
    if(l1===null&&l2===null)return true;
    if(l1===null||l2===null)return false;
    return l1.val===l2.val&&jude(l1.left,l2.right)&&jude(l1.right,l2.left);
  }
  return jude(root.left,root.right);
};