当前位置 博文首页 > L_add的博客:另一个树的子树

    L_add的博客:另一个树的子树

    作者:[db:作者] 时间:2021-08-26 12:39

    另一个树的子树

    题目描述:
    给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。
    题目来源:力扣(LeetCode)
    在这里插入图片描述
    思路:
    若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;
        return isSameTree(p->left,q->left)
            && isSameTree(p->right,q->right);
    }
    
    bool isSubtree(struct TreeNode* root, struct TreeNode* subRoot){
        //遍历s这棵树的每个结点,每个结点做子树去跟t比较
        if(root == NULL)
            return false;
        //每个结点都会作为子树的根出现
        if(isSameTree(root,subRoot))
            return true;
        return isSubtree(root->left,subRoot)
            || isSubtree(root->right,subRoot);
    }
    
    cs
    下一篇:没有了