输入两颗二叉树A,B,判断B是不是A的子结构。

图中,树B就是树A的一个子结构

思路:

首先,从树A的根节点开始,判断树B是否是从该根节点开始与树A重合。如果不是,继续判断左右子树。

重合判定:当前的A子树的根节点与B的根节点的值相同,再递归判断A的左右子树与B的左右子树是否相同。注意B为NULL判定为True, 表示B是A子树的一部分,没有到叶子节点。

bool isEqual(TreeNode* T1, TreeNode* T2){if(T2 == NULL)return true;else if(T1 == NULL)return false;elsereturn (T1->val == T2->val) && isEqual(T1->left, T2->left) && isEqual(T1->right, T2->right);}bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2){if(pRoot2 == NULL || pRoot1 == NULL) return false;return isEqual(pRoot1, pRoot2) || HasSubtree(pRoot1->left, pRoot2) ||  HasSubtree(pRoot1->right, pRoot2);}

【剑指offer】树的子结构相关推荐

  1. 剑指 offer 树的子结构

    子树和子结构的区别 这棵大树的子树有: 4 和 5 对应的两棵子树 3 本身自己完整的一棵树 而里面的小框圈出来的不是 3 这棵大树的子树! 还是上面那张图,子结构就是不用那么严格,图中的小框就是整棵 ...

  2. 剑指offer 树的子结构

    题目描述 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 解决方案: /** public class TreeNode {int val = 0;Tree ...

  3. 剑指offer——树的子结构

    Q:输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) A:要查找树A中是否存在和树B结构一样的子树.我们可以分为两步: 第一步在树A中找到和B的根节点一样的值 ...

  4. 剑指Offer_17_树的子结构

    题目描述 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 解题思路 首先判断 A 和 B 是否是空,如果为空,返回false:否则找到 A 和 B 的根结点 ...

  5. 【LeetCode笔记】剑指 Offer 26-. 树的子结构 (Java、双重dfs、二刷)

    文章目录 题目描述 思路 & 代码 二刷 题目描述 思路很值得看的一道题,和之前路径总和 III的双递归思路.结构很像 思路 & 代码 isSubStructrue() 进行一个前序的 ...

  6. 2021-06-28剑指offer26.树的子结构

    自顶向下遍历,自底向上返回. 先逐层比较,然后再传递,相当于前序遍历的模板 由于只要有一个true都可能为true,所以在比较返回的过程中全部为或的关系. 什么时候应该返回呢? 1)在遍历的过程中,当 ...

  7. DayN剑指offer树基础

    //树的前序中序后续递归非递归+层序+按照每层节点输出 package baselearning.tree;import java.util.*;class TreeNode {String val; ...

  8. 剑指OFFER思路总结与代码分享——树篇(Java实现)

    剑指OFFER树相关 55-1 二叉树的深度 27 二叉树的镜像 54 二叉搜索树的第K大节点 32-II 从上到下打印二叉树 07 重建二叉树 68-I 二叉搜索树的最近公共祖先 68-II 二叉树 ...

  9. 左神算法:判断 t1 树是否包含t2 树全部的拓扑结构(剑指 Offer 26. 树的子结构,Java版)

    本题来自左神<程序员代码面试指南>"判断 t1 树是否包含t2 树全部的拓扑结构"题目. 题目 剑指 Offer 26. 树的子结构 给定彼此独立的两棵树头节点分别为 ...

  10. 【LeetCode】剑指 Offer 26. 树的子结构

    [LeetCode]剑指 Offer 26. 树的子结构 文章目录 [LeetCode]剑指 Offer 26. 树的子结构 package offer;//定义树节点 class TreeNode{ ...

最新文章

  1. 计算机网络基础实验简答题,计算机网络基础实验报告.doc
  2. 【解决方案】无法将grub-efi-amd64-signed软件包安装到/target/【安装Ubuntu】
  3. 【C++】Visual Studio教程(七) -修改 Visual Studio
  4. System.Drawing.Color转System.Windows.Media.Color
  5. ajax结合接口 分页插件
  6. Tips--图像特征提取方法HOG、SIFT、LBP优缺点对比
  7. Jquery跨域调用(JSONP)遇到error问题的解决
  8. Mysql源码学习——Thread Manager
  9. 180908每日一句
  10. tcp欢动窗口机制_Linux网络编程面试--滑动窗口的实现机制
  11. 自动驾驶技术(3)- 高精度地图解决自动驾驶的功能痛点
  12. 126邮箱登录html,126邮箱登陆界面
  13. 机械制图计算机识图,机械制图与识图基础.ppt
  14. matlab的数字图像处理,基于MATLAB的数字图像处理分析及应用.pdf
  15. 计算机网络位置拒绝访问,Win10无法访问D盘提示位置不可用 拒绝访问的解法
  16. 中医文化之熏蒸的历史
  17. 使用行列式公式求多边形面积
  18. 本地搭建WordPress教程
  19. 使用uniapp注册全局组件
  20. TypeScript 学习笔记(一)—— 参考哔哩哔哩整理的笔记

热门文章

  1. tcpdump基础教程
  2. iOS架构模式-MVP
  3. Linux全攻略--MySQL数据库配置与管理
  4. 从SEO效果看谷歌百度360搜狗有道bing技术现状
  5. for语句联系 -小九九乘法表
  6. 开源网络备份软件bacula数据恢复(二)
  7. 找出和为某个数的连续正整数序列
  8. 第四课 CSS核心知识点
  9. SQL Server 2008杀数据库连接
  10. c# for 应输入;