题目链接:
力扣https://leetcode.cn/problems/symmetric-tree/submissions/
解题思路:
1. 首先要明确从二叉树的逻辑结构来说,对称并不是对称轴左右俩边的结点值相同,例如:
该图中的二叉树就不是对称的
2. 要想判断是否为对称二叉树,则需要左子树与右子树去进行比较,即它们的比较是相反的。而且根结点的值相同
3. 需要创建一个自定义比较函数用来比较,也包括比较一边的子树为空,而另一边的子树不为空的情况
4. 由此我们可以了解到,当问题的本质是左子树与右子树的相互比较时,其比较的则是二叉树中每一层的结点,而每一层的结点依次又往下延伸出新的结点,而该类比较就需要考虑其中一个子树为空,另一个子树不为空的特殊情况
代码实现:
bool check(struct TreeNode *root1,struct TreeNode *root2)//创建一个比较函数
{
if(root1 == NULL && root2 == NULL)
{
return true;
}
if(root1 == NULL || root2 == NULL)//创建函数的意义
{
return false;
}
if(root1->val != root2->val)
{
return false;
}
return check(root1->left,root2->right)&&check(root1->right,root2->left);
}
bool isSymmetric(struct TreeNode* root)
{
if (root == NULL)
{
return true;
}
return check(root->left,root->right);
}



