之前写的比较两棵树是否相等,是左子树和左子树比,右子树和右子树比——利用这个思想镜像二叉树就是从第二层的两个节点作为两棵树的根,然后比较,这里的比较是左子树和右子树比,右子树和左子树比
——也就是利用比较两个二叉树是否相等的变形:
bool isSameTree(struct TreeNode* p, struct TreeNode* q)
{
//两个都为空
if(p==NULL&&q==NULL)
{
return true;
}
//有一个为空
if(p==NULL||q==NULL)
{
return false;
}
//两个不为空,但值不相同
if(p->val!=q->val)
{
return false;
}
//值相同
return isSameTree(p->left,q->right)&& isSameTree(p->right,q->left);
}
bool isSymmetric(struct TreeNode* root){
return isSameTree(root->left,root->right);
}