另一个树的子树

Posted L_add

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了另一个树的子树相关的知识,希望对你有一定的参考价值。

另一个树的子树

题目描述:
给定两个非空二叉树 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);
}

以上是关于另一个树的子树的主要内容,如果未能解决你的问题,请参考以下文章

572. 另一个树的子树

LeetCode 572. 另一个树的子树

LeetCode 572. 另一个树的子树(Subtree of Another Tree) 40

树572. 另一个树的子树

LeetCode572另一个树的子树

leetcode572.另一个树的子树