public class a18_IsSubTree {

    public static boolean hasSubTree(TreeNode treeRoot1, TreeNode treeRoot2) {
boolean result = false;
if (treeRoot1 != null && treeRoot2 != null) {
if (treeRoot1.data == treeRoot2.data) {
result = DoesTree1HasTree2(treeRoot1, treeRoot2);
}
if (!result) {
result = hasSubTree(treeRoot1.left, treeRoot2);
}
if (!result)
result = hasSubTree(treeRoot1.right, treeRoot2); }
return result;
} private static boolean DoesTree1HasTree2(TreeNode treeRoot1, TreeNode treeRoot2) {
if (treeRoot2 == null)
return true;
if (treeRoot1 == null)
return false;
if (treeRoot1.data != treeRoot2.data) {
return false;
}
return DoesTree1HasTree2(treeRoot1.left, treeRoot2.left) && DoesTree1HasTree2(treeRoot1.right, treeRoot2.right); } public static void main(String[] args) {
TreeNode tree1 = new TreeNode(1);
TreeNode tree2 = new TreeNode(2);
TreeNode tree3 = new TreeNode(3);
TreeNode tree4 = new TreeNode(4);
TreeNode tree5 = new TreeNode(5);
TreeNode tree6 = new TreeNode(6);
TreeNode tree7 = new TreeNode(7);
TreeNode tree8 = new TreeNode(8);
tree1.left = tree2;
tree1.right = tree3;
tree2.left = tree4;
tree2.right = tree5;
tree3.left = tree6;
tree3.right = tree7;
tree4.left = tree8; TreeNode tree11 = new TreeNode(2);
TreeNode tree22 = new TreeNode(4);
TreeNode tree33 = new TreeNode(8);
tree11.left = tree22;
tree22.left = tree33;
System.out.println(hasSubTree(tree1, tree11)); } } class TreeNode {
int data;
TreeNode left = null;
TreeNode right = null; TreeNode(int data) {
this.data = data;
}
}

剑指OFFER18 判断一个二叉树的子树的更多相关文章

  1. 剑指offer——已知二叉树的先序和中序排列,重构二叉树

    这是剑指offer中关于二叉树重构的一道题.题目原型为: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2, ...

  2. 力扣 - 剑指 Offer 55 - I. 二叉树的深度

    题目 剑指 Offer 55 - I. 二叉树的深度 思路1(DFS) 后续遍历吧,先遍历到最深(递归到末尾返回0),然后从后面一步一步比较取大的值返回,每次返回层数都加1, 执行流程是怎样的:比如其 ...

  3. 《剑指offer》重建二叉树

    本题来自<剑指offer> 重构二叉树 题目: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2 ...

  4. 剑指Offer:重建二叉树【7】

    剑指Offer:重建二叉树[7] 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5 ...

  5. 剑指 Offer 68 - II. 二叉树的最近公共祖先 + 最近公共祖先(LCA)

    剑指 Offer 68 - II. 二叉树的最近公共祖先 Offer_68_2 题目详情 题解分析 java代码 package com.walegarrett.offer; /** * @Autho ...

  6. 力扣 - 剑指 Offer 37. 序列化二叉树

    目录 题目 思路 代码 复杂度分析 题目 剑指 Offer 37. 序列化二叉树 思路 序列化其实就是层序遍历 但是,要能反序列化的话,前.中.后.层序遍历是不够的,必须在序列化时候保存所有信息,这样 ...

  7. 剑指offer 判断树是不是对称的

    html, body { font-size: 15px; } body { font-family: Helvetica, "Hiragino Sans GB", 微软雅黑, & ...

  8. 剑指offer---4、序列化二叉树

    剑指offer---4.序列化二叉树 一.总结 一句话总结: 1. 对于序列化:使用前序遍历,递归的将二叉树的值转化为字符,并且在每次二叉树的结点不为空时,在转化val所得的字符之后添加一个' , ' ...

  9. 剑指 Offer 37. 序列化二叉树 + 二叉树的层次遍历

    剑指 Offer 37. 序列化二叉树 Offer_37 题目描述 题目解析 本题主要考察的就是二叉树的层次遍历. 层次遍历时可以根据二叉树的特点将空结点也进栈. 反序列化时同样可以根据层次遍历的思路 ...

随机推荐

  1. javascript if(条件)------------条件中可以使用的值

    1.布尔变量true/false2.数字非0,非NaN/ ( 或NaN) NaN--------Not a Number 3.对象非null/(null或undefined) 4.字符串非空串(&qu ...

  2. php设计模式中的类型安全 指--只接受特定的对象 ---以避免发生错误

    在百度百科中---类型安全代码指访问被授权可以访问的内存位置

  3. Windows 10 1703创意者更新官方ISO镜像大全

    2017年04月07日 20:00 19867 次阅读 稿源:快科技 12 条评论 Windows 10 Creators Update创意者更新正式版已经发布,目前只能通过易生.MCT工具或者ISO ...

  4. jquery 获取 outerHtml

    在开发过程中,jQuery.html() 是获取当前节点下的html代码,并不包括当前节点本身的代码,然后我们有时候确须要.找遍jQuery api文档也没有不论什么方法能够拿到. 看到有的人通过pa ...

  5. linux下安装最新版Subversion 1.8.9

    linux下安装最新版subversion,代码: [root@localhost subversion-1.8.9]# ./configure --prefix=/usr/local/subvers ...

  6. 【虚拟机】WIN8.1系统虚拟机完全彻底删除

    一.首先删除注册表 用管理员身份打开CMD,输入F:\>VMware-workstation-full-12.5.5-5234757.exe/clean,根据自己的虚拟机安装文件的路径进行改变( ...

  7. Java带标签的break 和带标签的continue

    最开始没有学习java 学习的是C语言然后工作开始用java,但当时并没有仔细看过java的书籍,也是大致一翻就看跟C语言很像,了解了基本语法就没有深究了,今天看书开始发现之前没有了解过的语法 带标签 ...

  8. LeetCode222——Count Complete Tree Nodes

    Given a complete binary tree, count the number of nodes. Definition of a complete binary tree from W ...

  9. 安装Redis 非结构化数据库

    1.官网下载安装包 1)    首先在Redis官网下载安装包: http://redis.io/download(redis-4.0.9.tar.gz) 2.在/usr/local/创建一个redi ...

  10. 【BZOJ4843】[Neerc2016]Expect to Wait 排序

    [BZOJ4843][Neerc2016]Expect to Wait Description ls最近开了一家图书馆,大家听说是ls开的,纷纷过来借书,自然就会出现供不应求的情况, 并且借书的过程类 ...