判断一棵二叉树是不是对称的

public class Solution {
    boolean isSymmetrical(TreeNode pRoot)
    {
        TreeNode node = getMirror(pRoot);
        return isSymmetrical(pRoot,node);
    }
    boolean isSymmetrical(TreeNode pRoot,TreeNode node)
    {
        if(pRoot == null && node == null){
            return true;
        }else if(pRoot == null || node  == null){
            return false;
        }
        if(pRoot.val == node.val){
            return isSymmetrical(pRoot.left,node.left)&&isSymmetrical(pRoot.right,node.right);
        }
       return false;
    }
      TreeNode getMirror(TreeNode pRoot){
         if (pRoot == null ) {
             return null ;
         }
         TreeNode root = new TreeNode(pRoot.val);
         root.right = getMirror(pRoot.left);
         root.left = getMirror(pRoot.right);
         return root;
     }
}

你可能感兴趣的:(剑指Offer-编程)