思路: 把左子树的左孩子与右子树的右孩子,左子树的右孩子与右子树的左孩子,匹配对比,有一个不一样就不是对称二叉树。
边界情况
如果左子树左孩子或 右孩子与 右子树的右孩子或左孩子都为NULL,那么这两个节点就按相等处理,如果只有一个节点为空,那么就按不等处理。
class Solution {
public:
bool def(TreeNode* l,TreeNode* r)
{
//if(root==nullptr)return false;
if (l == nullptr && r == nullptr) {
return true;
}
if(l&&r)
{
if(l->val!=r->val)
{
return false;
}
return def(l->left,r->right)&&def(l->right,r->left);
}
return false;
}
bool isSymmetric(TreeNode* root) {
if(root==nullptr)return true;
TreeNode* l=root->left;
TreeNode* r=root->right;
return def(l,r);
}
};