一. 题目描述
给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [1,2,2,3,4,4,3]
是对称的。
1 / \ 2 2 / \ / \ 3 4 4 3
但是下面这个 [1,2,2,null,3,null,3]
则不是镜像对称的:
1 / \ 2 2 \ \ 3 3
二. 我的解法
2.1 代码
class Solution {
public boolean isSymmetric(TreeNode root)
{
if( root == null ) return true;
return isSymmetricDouble(root.left, root.right);
}
public boolean isSymmetricDouble(TreeNode left, TreeNode right)
{
if( left == null && right == null ) return true;
else if( left == null || right == null ) return false;
else if( left.val != right.val ) return false;
return isSymmetricDouble(left.left, right.right) && isSymmetricDouble(left.right, right.left);
}
}
2.2 分析
1. 从直觉上出发,既然是对称的, 也就是左边的和右边的做比较, 左边的左边和右边的右边做比较。
2. 直觉是对的, 所以程序就按照直觉来写。
3. 最近用递归越来越得心应手了。
三. 参考
https://leetcode-cn.com/problems/symmetric-tree/description/