思路
对称的话 可以把一棵树 分成左子树和右子树 只要左子树的左边 和右子树的右边相同 && 左子树的右边和右子树的左边相同 就可以判断成功了
/* 运行时间:11ms 占用内存:9296KB 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; } TreeNode left = pRoot.left; TreeNode right = pRoot.right; return isFunc(left,right); } public static boolean isFunc(TreeNode left,TreeNode right ){ if(left == null && right ==null){ return true; } // 这个if 是判断 一种是 null的情况 因为两种的前面已经判了 所以不会出现两种的情况 if(left == null || right == null){ return false; } return left.val == right.val && isFunc(left.left,right.right) && isFunc(left.right,right.left); } }