直接省事一点,炒一下100题的代码,分别讨论单节点以及双空节点的情况,然后进行递归调用
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->left)&&isSameTree( p->right, q->right);
}
bool isSubtree(struct TreeNode* root, struct TreeNode* subRoot){if(subRoot==NULL){return true;}if(root==NULL){return false;}
if(root->left==root->right&&root->left==NULL&&root->val!=subRoot->val)
{
return false;
}
if(isSameTree(root,subRoot)==true)
{return true;
}
else
{return isSubtree(root->left,subRoot)||isSubtree(root->right,subRoot);
}}