【LeetCode笔记】剑指 Offer 26-. 树的子结构 (Java、双重dfs、二刷)
文章目录
- 题目描述
- 思路 & 代码
- 二刷
题目描述
- 思路很值得看的一道题,和之前路径总和 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、二刷)相关推荐
- 【LeetCode】剑指 Offer 26. 树的子结构
[LeetCode]剑指 Offer 26. 树的子结构 文章目录 [LeetCode]剑指 Offer 26. 树的子结构 package offer;//定义树节点 class TreeNode{ ...
- 左神算法:判断 t1 树是否包含t2 树全部的拓扑结构(剑指 Offer 26. 树的子结构,Java版)
本题来自左神<程序员代码面试指南>"判断 t1 树是否包含t2 树全部的拓扑结构"题目. 题目 剑指 Offer 26. 树的子结构 给定彼此独立的两棵树头节点分别为 ...
- LeetCode——剑指 Offer 26. 树的子结构
一.题目 输入两棵二叉树A和B,判断B是不是A的子结构.(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值. 例如: 给定的树 A: 3/ \4 5/ \1 2 ...
- 【无取巧解法,易于理解!】剑指 Offer 26. 树的子结构
看题解时,很多大牛用很少的代码就完成了AC,但可能看了很多遍也看不懂,因此萌生了写一种最"笨"最完整的代码的想法,这样大家可以通过我的代码入门,看懂了再去挑战大牛们的简洁解法. 输 ...
- 剑指offer——26.树的子结构(不太熟)
题目: 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 知识点: 无 注意: 注意想法的递归实现(好好琢磨一下,不然可能会忘!) 代码实现: 具体实现分两步 ...
- 剑指offer 26 树的子结构
输入两棵二叉树A和B,判断B是不是A的子结构.(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值. 例如: 给定的树 A: 3 / \ 4 5 / 1 2 给定 ...
- 剑指 Offer 26树的子结构(相关话题:对称性递归,在线算法)
目录 开篇引言 题目描述 代码实现 题目拓展 拓展解读 一类 100. 相同的树
- 剑指offer:树的子结构
题目 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 解题思路 暴力做法 取出树A/B的前序.中序: 判断这两个数组是否A都包含B,是则true. 前序和中 ...
- 《剑指offer》-- 树的子结构、二叉树的镜像、二叉树的深度、平衡二叉树
一. 树的子结构: 1.题目: 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构. 2.解题思路: 这个题比较简单,利用递归的方式就可以判断B是不是A树的子结构 ...
- 剑指offer之树的子结构
1 题目 输入两颗二叉树A和B,判断B是不是A的子结构(B树是A树的子结构) 比如: 2 树A 3 5 树B 5 ...
最新文章
- python 断点调试 pdb
- beego数据库orm操作数据表返回数组
- html dot标签,html – CSS Dot符号命名约定
- 云桌面部署_云桌面时代降临-青椒云工作站
- IoT -- (二) 物联网传感器介绍
- python的属性访问,python:如何访问函数的属性
- java 不兼容类型_java – 不兼容的类型和新鲜的类型变量
- django跳转到其他页面的方式
- L1-038 新世界
- C++ primer: C++标准库中vector类模板
- 舒尔特方格html5源码,舒尔特方格(5×5)
- 一些常用的ajax框架
- 【AWVS12】安全漏洞扫描工具,使用详解
- 怎么装办公系统服务器,怎么安装oa系统教程
- 第三方支付架构设计之—帐户体系
- 最大似然函数,琴生不等式
- 【AIS学习】06:AIS缩略语
- android应用自启分析与S4启动列表
- 基于PCIe的通用信号处理板PCIe-KU040-FMC
- 谷歌JsonObject
热门文章
- 怎么判断一个字符串的最长回文子串是否在头尾_最长回文字串/子序列问题(leetcode5,9,519)
- native.loadlibrary获取路径不对_【Python专题(三)】Python模块导入与路径管理
- html5+实现图片自动切换,js图片自动切换效果处理代码
- ip打包后如何加入 xilinx_科普!插上USB设备后电脑是怎么识别的呢?
- 电脑fps低怎么办_电脑想要英雄联盟玩的流畅,主要看哪几个方面?
- tensorflow(GPU)使用
- C++校招常见面试题(2019年校招总结)
- C++学习之路 | PTA乙级——1092 最好吃的月饼 (20 分)(精简)
- ie11不识别html5影片,IE11无法显示flash?IE11无法播放视频的解决方法
- python中字典的输出序列_python3:序列_字典(常用基础知识)