一. 题目描述
给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [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/
本文介绍了一种检查二叉树是否为镜像对称的有效算法。通过对左右子树进行递归比较,确保每层节点值相等且结构镜像对应。提供了详细的代码实现与分析,帮助理解二叉树对称性的判断逻辑。
360

被折叠的 条评论
为什么被折叠?



