https://leetcode.cn/problems/dui-cheng-de-er-cha-shu-lcof/description/
什么情况下满足二叉树对称?
1.两个二叉树的结点的值相等
2.第一个二叉树的左子树/右子树和第二个二叉树的右子树左子树镜像对称
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
bool check(TreeNode *p, TreeNode *q)
{
// 临界条件
if(!p && !q)
{
return true;
}
else if(!p || !q) // 如果有其中一棵子树比另一颗子树先遍历结束,则一定不对称
{
return false;
}
// 递归
else
{
if(p->val != q->val)
{
return false;
}
else
{
return check(p->left,q->right) && check(p->right,q->left);
}
}
}
bool checkSymmetricTree(TreeNode* root)
{
if(root == nullptr)
{
// 只有root结点时:满足对称
return true;
}
return check(root->left,root->right);
}
};