思路:

对称二叉树定义:对于树中任意两个对称节点L和R,一定有:

  • L.val = R.valL.val=R.val :即此两对称节点值相等;
  • L.left.val = R.right.valL.left.val=R.right.val :即L的左子节点和R的右子节点对称;
  • L.right.val = R.left.valL.right.val=R.left.val :即L的右子节点和R的左子节点对称。

代码:

public class Solution {
    boolean isSymmetrical(TreeNode pRoot) {
        if(pRoot==null)
            return true;
        return dfs(pRoot.left,pRoot.right);
    }   
    public boolean dfs(TreeNode l,TreeNode r){
        if(l==null && r==null) 
            return true;
        if(l==null || r==null) 
            return false;
        if(l!=null && r!=null && l.val!=r.val) 
            return false;
        return dfs(l.left,r.right) && dfs(l.right,r.left);
    }
}