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%的用户