思路
(1)巧妙的思路在于将第三代的子树的左右子树重新定义了左右这个概念。
(2)判断false , return right==null;
(3)另参见 剑指Offer-树-面试题28:对称的二叉树
解法
执行用时 :1 ms, 在所有 Java 提交中击败了54.54%的用户
内存消耗 :38.8 MB, 在所有 Java 提交中击败了6.60%的用户
class Solution {
public boolean isSymmetric(TreeNode root) {
// 左子树的 左子树 == 右子树的 右子树;
// 左子树的 右子树 == 右子树的 左子树;
if(root == null){
return true;
}
return isSymmetric(root.left, root.right);
}
boolean isSymmetric(TreeNode left , TreeNode right){
if(left == null){
return right==null;
}
if(right == null){
return false;
}
if(left.val != right.val){
return false;
}
return isSymmetric(left.left, right.right) && isSymmetric(left.right, right.left);
}
}