/* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
} / / 采用递归判断二叉树的左右子树是否堆成 若左右子树都为空,则二叉树是对称的 若左右子树一颗为空一颗不为空,肯定不对称 当左右子树都不为空时,若左右子树的父节点值不同,肯定不对称 若左右子树的父节点值相等,递归判定左子树的左子树和右子树的右子树 是否对称且左子树的右子树和右子树的左子树是否对称
*/ public class Solution {
boolean isSymmetrical(TreeNode pRoot) {
if(pRoot == null){return true;}
return check(pRoot.left,pRoot.right);
}
boolean check(TreeNode a, TreeNode b) {
if(a == null && b == null) return true;
if (a == null && b != null) return false;
if (a != null && b == null) return false;
if ( a.val != b.val) return false;
return check(a.left, b.right) && check(a.right, b.left);
}
}