文章目录

  • 题目描述
  • 思路 & 代码
    • 二刷

题目描述

  • 思路很值得看的一道题,和之前路径总和 III的双递归思路、结构很像

思路 & 代码

  • isSubStructrue() 进行一个前序的遍历;通过 || 运算符,在找到时直接终止遍历
  • 具体函数功能、思路见代码注释
/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
class Solution {// 函数功能:遍历,判断 B 是否为 A 的子结构public boolean isSubStructure(TreeNode A, TreeNode B) {// 空树不是任意一个树的子结构if(A == null || B == null){return false;}// 先序:以 A 开始的子结构判断 || 左节点继续遍历 || 右节点继续遍历return recursion(A, B) || isSubStructure(A.left, B) || isSubStructure (A.right, B);}// 函数功能:判断以A开始的树,是否包含子结构B树。boolean recursion(TreeNode A, TreeNode B){// B遍历结束,说明完全覆盖了B,子结构if(B == null){return true;}// A遍历结束 or 节点值不同:不是子结构if(A == null || A.val != B.val){return false;}// 当前节点相同,继续进行左右子数的判断return recursion(A.left, B.left) && recursion(A.right, B.right);}
}

二刷

  • 二刷居然忘了思路了= =
  • 先对当前A,B进行符合判断,不行的话就再对A.left && B、A.right && B 进行判断。以此类推
  • isStructure() 是直接对当前节点进行判断
class Solution {public boolean isSubStructure(TreeNode A, TreeNode B) {if(A == null || B == null) {return false;}return isStructure(A, B) || isSubStructure(A.left, B) || isSubStructure(A.right, B);}public boolean isStructure(TreeNode A, TreeNode B) {if(B == null) {return true;}if(A == null || A.val != B.val) {return false;}return isStructure(A.left, B.left) && isStructure(A.right, B.right);}
}

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

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

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

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

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

  3. LeetCode——剑指 Offer 26. 树的子结构

    一.题目 输入两棵二叉树A和B,判断B是不是A的子结构.(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值. 例如: 给定的树 A: 3/ \4 5/ \1 2 ...

  4. 【无取巧解法,易于理解!】剑指 Offer 26. 树的子结构

    看题解时,很多大牛用很少的代码就完成了AC,但可能看了很多遍也看不懂,因此萌生了写一种最"笨"最完整的代码的想法,这样大家可以通过我的代码入门,看懂了再去挑战大牛们的简洁解法. 输 ...

  5. 剑指offer——26.树的子结构(不太熟)

    题目: 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 知识点: 无 注意: 注意想法的递归实现(好好琢磨一下,不然可能会忘!) 代码实现: 具体实现分两步 ...

  6. 剑指offer 26 树的子结构

    输入两棵二叉树A和B,判断B是不是A的子结构.(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值. 例如: 给定的树 A: 3 / \ 4 5 / 1 2 给定 ...

  7. 剑指 Offer 26树的子结构(相关话题:对称性递归,在线算法)

    目录 开篇引言 题目描述 代码实现 题目拓展 拓展解读 一类 100. 相同的树

  8. 剑指offer:树的子结构

    题目 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 解题思路 暴力做法 取出树A/B的前序.中序: 判断这两个数组是否A都包含B,是则true. 前序和中 ...

  9. 《剑指offer》-- 树的子结构、二叉树的镜像、二叉树的深度、平衡二叉树

    一. 树的子结构: 1.题目: 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构. 2.解题思路: 这个题比较简单,利用递归的方式就可以判断B是不是A树的子结构 ...

  10. 剑指offer之树的子结构

    1 题目 输入两颗二叉树A和B,判断B是不是A的子结构(B树是A树的子结构) 比如:                   2     树A    3    5      树B   5         ...

最新文章

  1. python 断点调试 pdb
  2. beego数据库orm操作数据表返回数组
  3. html dot标签,html – CSS Dot符号命名约定
  4. 云桌面部署_云桌面时代降临-青椒云工作站
  5. IoT -- (二) 物联网传感器介绍
  6. python的属性访问,python:如何访问函数的属性
  7. java 不兼容类型_java – 不兼容的类型和新鲜的类型变量
  8. django跳转到其他页面的方式
  9. L1-038 新世界
  10. C++ primer: C++标准库中vector类模板
  11. 舒尔特方格html5源码,舒尔特方格(5×5)
  12. 一些常用的ajax框架
  13. 【AWVS12】安全漏洞扫描工具,使用详解
  14. 怎么装办公系统服务器,怎么安装oa系统教程
  15. 第三方支付架构设计之—帐户体系
  16. 最大似然函数,琴生不等式
  17. 【AIS学习】06:AIS缩略语
  18. android应用自启分析与S4启动列表
  19. 基于PCIe的通用信号处理板PCIe-KU040-FMC
  20. 谷歌JsonObject

热门文章

  1. 怎么判断一个字符串的最长回文子串是否在头尾_最长回文字串/子序列问题(leetcode5,9,519)
  2. native.loadlibrary获取路径不对_【Python专题(三)】Python模块导入与路径管理
  3. html5+实现图片自动切换,js图片自动切换效果处理代码
  4. ip打包后如何加入 xilinx_科普!插上USB设备后电脑是怎么识别的呢?
  5. 电脑fps低怎么办_电脑想要英雄联盟玩的流畅,主要看哪几个方面?
  6. tensorflow(GPU)使用
  7. C++校招常见面试题(2019年校招总结)
  8. C++学习之路 | PTA乙级——1092 最好吃的月饼 (20 分)(精简)
  9. ie11不识别html5影片,IE11无法显示flash?IE11无法播放视频的解决方法
  10. python中字典的输出序列_python3:序列_字典(常用基础知识)