之前写的比较两棵树是否相等,是左子树和左子树比,右子树和右子树比——利用这个思想镜像二叉树就是从第二层的两个节点作为两棵树的根,然后比较,这里的比较是左子树和右子树比,右子树和左子树比
——也就是利用比较两个二叉树是否相等的变形:
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);
}