【C语言题解】 | 572. 另一棵树的子树

572. 另一棵树的子树

  • [572. 另一棵树的子树](#572. 另一棵树的子树)
  • 代码

572. 另一棵树的子树

c 复制代码

该题目需要判断一二叉树是否为另一二叉树的子树

像此类,就不算是root的子树

c 复制代码

此题的思路为:

传入subRoot ,与root 相比较,判断二者是否相同

若与root不相同,则仍需与root的子树进行相比较,直至比较完。

(判断是否二叉树是否相同可参考相同的树)

代码

c 复制代码
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( root == NULL)
        return false;

    return isSameTree(root,subRoot)
        || isSubtree(root->left,subRoot)
        || isSubtree(root->right,subRoot);
}
相关推荐
小王不爱笑1321 小时前
IO 模型
开发语言·python
短剑重铸之日2 小时前
《ShardingSphere解读》07 读写分离:如何集成分库分表+数据库主从架构?
java·数据库·后端·架构·shardingsphere·分库分表
知我Deja_Vu2 小时前
【避坑指南】ConcurrentHashMap 并发计数优化实战
java·开发语言·python
AI+程序员在路上2 小时前
CANopen 协议:介绍、调试命令与应用
linux·c语言·开发语言·网络
2401_831824962 小时前
基于C++的区块链实现
开发语言·c++·算法
爱编码的小八嘎2 小时前
C语言完美演绎4-4
c语言
m0_518019483 小时前
C++与机器学习框架
开发语言·c++·算法
ZTLJQ3 小时前
深入理解逻辑回归:从数学原理到实战应用
开发语言·python·机器学习
qq_417695053 小时前
C++中的代理模式高级应用
开发语言·c++·算法
daidaidaiyu3 小时前
Spring IOC 源码学习 事务相关的 BeanDefinition 解析过程 (XML)
java·spring