树的子结构

class Solution {
public:
    bool check(TreeNode* r1, TreeNode* r2)
    {
        if(r2==NULL)  return true;//如果r2为空,无论r1,都匹配成功
        if(r1&&r2)
        {
            if(r1->val!=r2->val) return false;
            else return check(r1->left,r2->left)&&check(r1->right,r2->right);
        }
        else return false;//如果r1为空,r2还存在,返回false
    }
    bool dfs(TreeNode* r1, TreeNode* r2)
    {
        if(r1==NULL||r2==NULL)  return false;//空树不是任何子结构
        if(check(r1,r2))
            return true;
        return dfs(r1->left,r2)||dfs(r1->right,r2);
    }
    bool hasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) {
        return dfs(pRoot1,pRoot2);
    }
};
posted @   穿过雾的阴霾  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示