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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java中的JPA是什么意思?「建议收藏」

    Java中的JPA是什么意思?「建议收藏」JPA(JavaPersistenceAPI),Java持久层API。它可以通过注解(JDK5.0)或者XML的方式描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。它为POJO提供持久化标准规范,Hibernate3.2+、TopLink10.1.3以及OpenJPA都提供了JPA的实现它的总体思想和现有Hibernate、TopLink、JDO等ORM框架大体一致。它包括以下3方面的技术:(1)ORM映射元数据JPA支持XML和JDK5.0注解两种元.

    2022年6月29日
    28
  • PreparedStatement类详解以及案例

    PreparedStatement类详解以及案例一:jdbc(1)注册驱动(2)获得链接:(3)获得sql容器:Statement:(4)执行sql语句:(5)查询操作,需要遍历结果集:(6)关闭资源:Statement:存在的弊端,可以被sql注入:所以实际开发是不在地用的**PreparedStatement:类:**作用:(1)带有预编译的功能:(2)效率高:(3)防止sql注入:传统…

    2022年5月1日
    51
  • linux系统重启网卡命令_重启linux网卡

    linux系统重启网卡命令_重启linux网卡在实际工作中,经常会遇到Linux系统进行重启网卡的操作。接下来是小编为大家收集的linux系统重启网卡方法,希望能帮到大家。linux系统重启网卡方法一、servicenetworkrestart1、首先用CRT工具连接到Linux命令行界面。或者进入操作系统界面,选择终端输入。2、如果我们对所有的网卡进行重启操作。可以尝试输入:servicenetworkrestart命令进行操…

    2022年4月19日
    317
  • leetcode归并排序_每次把待排序的区间划分为左右

    leetcode归并排序_每次把待排序的区间划分为左右以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。示例 1:输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入:intervals = [[1,4],[4,5

    2022年8月8日
    3
  • window 下 win10 jdk安装与环境变量的配置(超级详细)

    window 下 win10 jdk安装与环境变量的配置(超级详细)1、jdk的下载1.1官网下载地址https://www.oracle.com/java/technologies/javase-downloads.html这里以为下载需要登录所以我准备了百度网盘1.2百度网盘下载链接:https://pan.baidu.com/s/1uBm0XqBtbdafWgn_YUSWLA提取码:2mqh2、新建文件夹2.1、新建Java文件夹我这里选择的是安装的文件夹我在H盘里面新建了个java文件夹,这里盘符可以改的CDE啥都无所谓

    2022年5月3日
    42
  • 【免费分享】让思路更清晰,思维导图教程及工具[通俗易懂]

    思维导图,让思路更清晰,结构更完整。当你大脑一片混乱不知道该从什么地方做起,可以试着使用一下思维导图工具。昨天列了一下这一年关于自己提升的一些方面,使用思维导图进行简单的列举,有一些好友希望知道我使用的是那个工具来画思维导图的。下面简单介绍一些思维导图工具,在日常生活和工作中希望能够帮助到你。XMind【离线】XMind是一个开源的脑图项目,可以自由下载使用。有XMind Plus…

    2022年2月28日
    48

发表回复

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

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