判断一棵树是否是另一棵树的子树

简介:

问题

判断一棵树是否是另一棵树的子树,如图

思路

问题分两步:

  • 找值相同的根结点(遍历解决)
  • 判断两结点是否包含(递归:值、左孩子、右孩子分别相同)

树节点定义

复制代码
struct TreeNode
{
    int val;
    TreeNode *next;
    TreeNode(int v) : val(v), next(NULL) {}
};
复制代码

代码

复制代码
bool IsPart(TreeNode *root1, TreeNode *root2)
{
    if (root2 == NULL)
        return true;
    if (root1 == NULL)
        return false;
    if (root1->val != root2->val)
        return false;
    return IsPart(root1->left, root2->left) &&
        IsPart(root1->right, root2->right);
}
bool IsPartTree(TreeNode *root1, TreeNode *root2)
{
    bool result = false;
    if (root1 != NULL && root2 != NULL)
    {
        if (root1->val == root2->val)
            result = IsPart(root1, root2);
        if (!result)
            result = IsPartTree(root1->left, root2);
        if (!result)
            result = IsPartTree(root1->right, root2);
    }
    return result;
}
复制代码

执行

  View Code

 

推荐

算法与数据结构索引

 




本文转自jihite博客园博客,原文链接:http://www.cnblogs.com/kaituorensheng/p/4215688.html,如需转载请自行联系原作者


相关文章
|
11月前
|
SQL JavaScript 数据库连接
Seata的工作原理
【10月更文挑战第30天】
327 3
|
SQL 存储 NoSQL
从SQL到NoSQL:理解不同数据库类型的选择与应用——深入比较数据模型、扩展性、查询语言、一致性和适用场景,为数据存储提供全面决策指南
【8月更文挑战第31天】在信息技术飞速发展的今天,数据库的选择至关重要。传统的SQL数据库因其稳定的事务性和强大的查询能力被广泛应用,而NoSQL数据库则凭借其灵活性和水平扩展性受到关注。本文对比了两种数据库类型的特点,帮助开发者根据应用场景做出合理选择。SQL数据库遵循关系模型,适合处理结构化数据和复杂查询;NoSQL数据库支持多种数据模型,适用于非结构化或半结构化数据。SQL数据库在一致性方面表现优异,但扩展性较差;NoSQL数据库则设计之初便考虑了水平扩展性。SQL使用成熟的SQL语言,NoSQL的查询语言更为灵活。
295 0
|
存储 安全 Java
深入了解 Elasticsearch 8.1 中的 Script 使用
深入了解 Elasticsearch 8.1 中的 Script 使用
965 1
|
Shell Linux
LINUX SHELL多条件(与、或)if判断怎么写?
LINUX SHELL多条件(与、或)if判断怎么写?
1659 0
|
fastjson Java
fastjson为何使用TypeReference?(上)
fastjson为何使用TypeReference?
1124 0
fastjson为何使用TypeReference?(上)
|
5天前
|
人工智能 运维 安全
|
3天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
10天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
848 109