子树

题目描述

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

注意事项若 T1 中存在从节点 n 开始的子树与 T2 相同,我们称 T2 是 T1 的子树。也就是说,如果在T1节点n处将树砍
断,砍断的部分将与T2完全相同。
样例

下面的例子中 T2 是 T1 的子树:

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

下面的例子中T2不是T1的子树:

         1               3/ \               \T1 = 2   3       T2 =    4/4
算法分析:
前面一道题目是判断两棵二叉树是否相等,可以直接利用前面的算法,将T1的所有子树与T2进行比较即可。

Java算法实现:

/*** Definition of TreeNode:* public class TreeNode {*     public int val;*     public TreeNode left, right;*     public TreeNode(int val) {*         this.val = val;*         this.left = this.right = null;*     }* }*/
public class Solution {/*** @param T1, T2: The roots of binary tree.* @return: True if T2 is a subtree of T1, or false.*/public boolean isSubtree(TreeNode T1, TreeNode T2) {// write your code hereboolean result=false;if(T2==null){return true;}else{if(T1!=null){result=isIdentical(T1, T2);if(!result){result=isSubtree(T1.left, T2);if(!result){result=isSubtree(T1.right, T2);}}}return result;}}public static  boolean isIdentical(TreeNode a, TreeNode b) {// Write your code hereif(a==null&&b==null){return true;}else if(a==null||b==null){return false;}else{if(a.val!=b.val){return false;}else{boolean result=isIdentical(a.left, b.left);if(!result){return result;}else{result=isIdentical(a.right, b.right);return result;}}}}
}

转载于:https://www.cnblogs.com/dongling/p/5795933.html

LintCode2016年8月8日算法比赛----子树相关推荐

  1. 第11届蓝桥杯省赛真题剖析-2020年6月21日Scratch编程初中级组

    [导读]:超平老师的<Scratch蓝桥杯真题解析100讲>已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第125讲. 第11届蓝桥杯省赛,这是2020年6月2 ...

  2. c++builder 6 转成vs_官方:欧洲杯将在2021年6月11日至7月11日进行,举办城市不变...

    欧足联官方宣布,2020欧洲杯仍将在原定的12座城市举办,比赛时间定在2021年6月11日-7月11日. 希望退票的球迷可以在2020年6月18日至6月25日进行退票. 2020欧洲杯附加赛暂定于今年 ...

  3. 【12月17日更新决赛预测】用二元泊松模型预测2022年世界杯淘汰赛结果

    用二元泊松模型预测2022年世界杯淘汰赛结果 网上有很多文章用双泊松(Double Poisson)模型来预测世界杯比赛结果.但是双泊松模型有一个严重的缺陷,那就是它假设比赛中两队的比分是条件独立的. ...

  4. ACwing算法基础课全程笔记(2021年8月12日开始重写+优化)

    更好的阅读体验 ※基础模板 2021年8月12日开始对基础课笔记进行重写+优化 请大家支持AcWing正版,购买网课能让自己获得更好的学习体验哦~ 链接:https://www.acwing.com/ ...

  5. 11月14日云栖精选夜读 | 动画+原理+代码,解读十大经典排序算法

    排序算法是<数据结构与算法>中最基本的算法之一. 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过 ...

  6. 8月18日 | 智能车竞赛云比赛过半,华南赛区成绩小结

    01华南赛区成绩小结 1.高校与队伍 七个云端比赛点,共有31所高校108支参赛队伍参加了五个项目的竞赛.这七个赛点的高校与其参赛队伍见下表格: 表格1:参赛高校与队伍数量 序号 高校 队伍数量 1 ...

  7. Kaggle常用函数总结 原创 2017年07月03日 21:47:34 标签: kaggle 493 kaggle比赛也参加了好几次,在这里就把自己在做比赛中用到的函数汇总到这,方便自己以后查阅

    Kaggle常用函数总结 原创 2017年07月03日 21:47:34 标签: kaggle / 493 编辑 删除 kaggle比赛也参加了好几次,在这里就把自己在做比赛中用到的函数汇总到这,方便 ...

  8. AI开发者大会之计算机视觉技术实践与应用:2020年7月3日《RPA+AI助力政企实现智能时代的人机协同》、《5G风口到来,边缘计算引领数据中心变革》、《数字化时代金融市场与AI算法如何结合?》

    AI开发者大会之计算机视觉技术实践与应用:2020年7月3日<RPA+AI助力政企实现智能时代的人机协同>.<5G风口到来,边缘计算引领数据中心变革>.<数字化时代金融市 ...

  9. Paper:2020年3月30日何恺明团队最新算法RegNet—来自Facebook AI研究院《Designing Network Design Spaces》的翻译与解读

    Paper:2020年3月30日何恺明团队最新算法RegNet-来自Facebook AI研究院<Designing Network Design Spaces>的翻译与解读 导读: 卧槽 ...

最新文章

  1. linux socket 套接字状态 EAGAIN EWOULDBLOCK EINTR 与非阻塞 简介
  2. SDUT_2121数据结构实验之链表六:有序链表的建立 (对建立的单项链表结构进行排序)
  3. C# 多线程,解决处理大数据时窗体(不能拖动等)假死现象
  4. NPL之如何使用Glove--词向量转化
  5. flashBuilder安装Subclipse与XMLBuddy插件
  6. minecraft java_minecraft java版本下载
  7. 软考·网络工程师认证(第八章)
  8. 干货 | 扫了那么多二维码,15款工具打造你的专属二维码
  9. 获取微信公众号地址的图片不能正常显示的问题
  10. 电脑爱好者——投稿与稿费指南
  11. hcl出现“Invalid ciphertext password.”错误的解决方法
  12. 在Gtalk中和你的msn,yahoo,icq/aim,qq好友聊天
  13. Oracle中查询用户表/索引/视图的创建语句
  14. 为什么mysql的delete操作不释放磁盘空间
  15. AttributeError: ‘Upsample‘ object has no attribute ‘recompute_scale_factor‘
  16. 第二章数据通信基础(冲!)
  17. 英语语法汇总(10.被动语态)
  18. C语言 两个整数的四则运算
  19. h5app 实现ios更新跳转appStore
  20. (初学者)使用DOSBox编写汇编程序

热门文章

  1. Linq To Sql进阶系列(二)M:M关系
  2. MockWebServer--环境
  3. 酷客多小程序携手Richly network Pte Led正式进军新加坡市场
  4. Linux关机重启指令
  5. 微积分8--相关变化率
  6. IEnumerable.Select和SelectMany的区别
  7. Silverlight3游戏开发之空当接龙基础篇
  8. 判断字符串是否为数字的函数
  9. Asp.net上传文件至目录
  10. 【廖雪峰官方网站/Java教程】多线程(2)