LintCode 子树「建议收藏」

LintCode 子树

大家好,又见面了,我是全栈君。

easy 子树

19%

通过

有两个不同大小的二进制树: T1 有上百万的节点; T2 有好几百的节点。请设计一种算法。判定 T2 是否为 T1的子树。

您在真实的面试中是否遇到过这个题?
 

Yes



例子

以下的样例中 T2 是 T1 的子树:

       1                3
      / \              / 
T1 = 2   3      T2 =  4
        /
       4

以下的样例中 T2 不是 T1 的子树:

       1               3
      / \               \
T1 = 2   3       T2 =    4
        /
       4

/**
 * Definition of TreeNode:
 * class TreeNode {
 * public:
 *     int val;
 *     TreeNode *left, *right;
 *     TreeNode(int val) {
 *         this->val = val;
 *         this->left = this->right = NULL;
 *     }
 * }
 */
class Solution {
public:
    /**
     * @param T1, T2: The roots of binary tree.
     * @return: True if T2 is a subtree of T1, or false.
     */
    bool isSubtree(TreeNode *T1, TreeNode *T2) {
         bool result  = false;
        if (T2 == nullptr) {
            return true;
        }
        if (T1 == nullptr) {
            return false;
        }
        // write your code here
        if (T1->val == T2->val) {
             result = dp(T1,T2);
        }
        if (!result) {
          result =  isSubtree(T1->left,T2);
        }
        if (!result) {
            result =  isSubtree(T1->right,T2);
        }
        return result;
    }
    
    bool dp (TreeNode *T1, TreeNode *T2) {
    
        if (T1 != nullptr && T2!=nullptr && T1->val == T2->val) {
            return dp(T1->left,T2->left) && dp (T1->right,T2->right);
        }
        if (T1 == nullptr && T2 == nullptr) {
            return true;
        }
        return false;
    }
};

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115384.html原文链接:https://javaforall.net

(0)
上一篇 2022年2月5日 上午9:00
下一篇 2022年2月5日 上午9:00


相关推荐

  • Android应用程序开发以及背后的设计思想深度剖析(1)

    Android应用程序开发以及背后的设计思想深度剖析(1)本文内容 主题是透过应用程序来分析 Android 系统的设计原理与构架 我们先会简单介绍一下 Android 里的应用程序编程 然后以这些应用程序在运行环境上的需求来分析出 为什么我们的 Android 系统需要今天这样的设计方案 这样的设计会有怎样的意义 Android 究竟是基于怎样的考虑才变成今天的这个样子 所以本文更多的分析 Android 应用程序设计背后的思想 品味良好架构设计的魅力 分五次连载完成

    2026年3月18日
    4
  • 序号的结构层次顺序

    序号的结构层次顺序数字序号的级别顺序为 第一层为汉字数字加顿号 例如 一 二 三 第二层为括号中包含汉字数字 例如 一 二 三 第三层为阿拉伯数字加下脚点 例如 1 2 3 第四层为括号中包含阿拉伯数字 例如 1 2 3 第五层为带圈的阿拉伯数字 例如 或者 1 2 3

    2026年3月18日
    2
  • java对象转换为json_java jsonarray

    java对象转换为json_java jsonarray2019独角兽企业重金招聘Python工程师标准>>>…

    2025年6月6日
    5
  • idea mac 常用快捷键[通俗易懂]

    #IDEAMacOS全局查找快捷键shift+Command+F#全局类名称搜索shift+shift(没有发生变化)#移动代码行方式一:shift+command+⬆️或者⬇️方式二:shift+option+⬆️或者⬇️#光标在代码中间,将光标移动到行尾并且自动添加行尾结束符号;shift+command+return(这里不会进行换行操作,eclipse上面会进行换行操作)#代码美化o…

    2022年4月15日
    228
  • clipper使用

    clipper使用一、clipper使用的redis库说明enumRedisDBTable{REDIS_STATE_DB_NUM=1,REDIS_MODEL_DB_NUM=2,REDIS_CONTAINER_DB_NUM=3,REDIS_RESOURCE_DB_NUM=4,REDIS_APPLICATION_DB_NUM=5,REDIS_METADATA_DB_NUM=6,//usedtostoreClipperconfigurationmetadat

    2025年8月23日
    11
  • display_errors与error_reporting,有意思之处「建议收藏」

    display_errors与error_reporting,有意思之处

    2022年2月14日
    57

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号