检查两颗树是否相同
思路
- 根要相等 p->val == q->val
- 左子树相等 isSameTree(p->left,q->left)
- 右子树也要相等 isSameTree(p->right,q->right)
bool isSameTree(struct TreeNode* p, struct TreeNode* q){
if(p == NULL && q == NULL){
return true;
}
if(p == NULL || q==NULL){
return false;
}
return p->val == q->val
&& isSameTree(p->left,q->left)
&& isSameTree(p->right,q->right);
}
对称二叉树
silu
- 根 p->val == q->val
- 左子树 isMirror(p->left , q->right)
- 右子树 isMirror(p->right,q->left)
bool isMirror(struct TreeNode *p,struct TreeNode *q){
if(p == NULL && q == NULL){
return true;
}
if(p == NULL || q == NULL){
return false;
}
return p->val == q->val
&& isMirror(p->left,q->right)
&& isMirror(p->right,q->left);
}
bool isSymmetric(struct TreeNode* root){
if(root == NULL){
return true;
}
return isMirror(root->left,root->right);
}