?
?
/* 解题思路: 判断t是否为s的子树,需要判断t是否和s的某一个子树相同,所以此题就是判断两棵树是否相同的逻辑。 */
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;
}
else
{
return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);
}
}
bool isSubtree(struct TreeNode* root, struct TreeNode* subRoot)
{
if(root==NULL)
{
return false;
}
if(root->val==subRoot->val)
{
if(isSameTree(root, subRoot))
{
return true;
}
}
return isSubtree(root->left, subRoot)||isSubtree(root->right, subRoot);
}
?