Skip to the content.

Ex28 对称的二叉树

题目描述

请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。

例如,二叉树 [1,2,2,3,4,4,3] 是对称的。

解题思路

这个题最主要的考察点在于对对称的理解,理解了对称之后,就不难写出相关的递归代码。

代码

bool is_symmetric_core (struct TreeNode *left, struct TreeNode *right);

bool
isSymmetric (struct TreeNode *root)
{
  if (!root)
    return true;
  return is_symmetric_core (root->left, root->right);
}

bool
is_symmetric_core (struct TreeNode *left, struct TreeNode *right)
{
  if (!left && !right)
    return true;
  if (!left || !right)
    return false;
  if (left->val != right->val)
    return false;
  return is_symmetric_core (left->left, right->right)
         && is_symmetric_core (left->right, right->left);
}

结果

执行结果:通过

执行用时:0 ms, 在所有 C 提交中击败了100.00%的用户

内存消耗:6.9 MB, 在所有 C 提交中击败了7.35%的用户