🏆个人主页:企鹅不叫的博客
🌈专栏
⭐️ 博主码云gitee链接:代码仓库地址
⚡若有帮助可以【关注+点赞+收藏】,大家一起进步!
💎一、题目
🏆1.题目描述
🏆2.原题链接
💎二、解题报告
🏆1.思路分析
🔑思路:
首先判断根,之后分治判断左右子树
🏆2.代码详解
bool _isSymmetric(struct TreeNode* left, struct TreeNode* right){
if(left == NULL && right == NULL) //1
{
return true;
}
if(left == NULL || right == NULL) //2
{
return false;
}
if(left->val != right->val) //3
{
return false;
}
return _isSymmetric(left->left, right->right)//4
&& _isSymmetric(left->right, right->left);
}
bool isSymmetric(struct TreeNode* root){
if(root == NULL) //5
{
return true;
}
return _isSymmetric(root->left, root->right);
}
1.主树和从树都为空,说明前面都一样,返回true
2.主树和从树只有一个为空,说明另一个不为空,返回false
3.主树和从树都不为空,但是两个的值不相等,所以返回false
4.分治比较主树的左子树和从树的右子树,主树的右子树和从树的左子树
5.日常判断根是否为空