力扣经典题:另一棵树的子树

力扣经典题:另一棵树的子树_第1张图片

直接省事一点,炒一下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);
}

}

你可能感兴趣的:(数据结构,leetcode,算法,职场和发展)