其实和判断是否相同是一样的:
bool isSymmetric(TreeNode* root) {
if (root == nullptr) {
return true;
}
function<bool(TreeNode*&, TreeNode*&)> check;
check = [&](TreeNode*& p, TreeNode*& q)
{
if (p == nullptr && q == nullptr){
return true;
}
else if (p == nullptr || q == nullptr){
return false;
}
else if (p->val != q->val){
return false;
}
else{
return (check(p->left, q->right) && check(p->right, q->left));
}
};
return check(root->left, root->right);
}