
剑指 Offer 26. 树的子结构
发布日期:2021-05-06 23:24:46
浏览次数:18
分类:技术文章
本文共 1675 字,大约阅读时间需要 5 分钟。
package SwordOffer;/*** @Description: 输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。例如:给定的树 A: 3 / \ 4 5 / \ 1 2给定的树 B: 4 / 1返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。示例 1:输入:A = [1,2,3], B = [3,1]输出:false示例 2:输入:A = [3,4,5,1,2], B = [4,1]输出:true限制:0 <= 节点个数 <= 10000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shu-de-zi-jie-gou-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。* @Param:* @return:* @Author: lvhong* @Date:* @E-mail lvhong282@163.com*/public class lab26middle { class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } public boolean isSubStructure(TreeNode A, TreeNode B) { if (A == null || B == null) return false; //先从根节点判断B是不是A的子结构,如果不是在分别从左右两个子树判断, //只要有一个为true,就说明B是A的子结构 return isSub(A, B) || isSubStructure(A.left, B) || isSubStructure(A.right, B); } boolean isSub(TreeNode A, TreeNode B) { //这里如果B为空,说明B已经访问完了,确定是A的子结构 if (B == null) return true; //如果B不为空A为空,或者这两个节点值不同,说明B树不是 //A的子结构,直接返回false if (A == null || A.val != B.val) return false; //当前节点比较完之后还要继续判断左右子节点 return isSub(A.left, B.left) && isSub(A.right, B.right); }// public boolean isSubStructure(TreeNode A, TreeNode B) {// return (A != null && B != null) && (recur(A, B) || isSubStructure(A.left, B) ||isSubStructure(A.right, B));// }// boolean recur(TreeNode A, TreeNode B) {// if(B == null) return true;// if(A == null || A.val != B.val) return false;// return recur(A.left, B.left) && recur(A.right, B.right);// }}
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年03月19日 20时32分47秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
java学习笔记31:Arrays类介绍使用
2019-03-04
java学习笔记36:Integer的基本方法
2019-03-04
java学习笔记37:Long的基本方法
2019-03-04
java并发学习2:线程的应用
2019-03-04
java并发学习12:问题引入
2019-03-04
java并发学习20:park与unpark
2019-03-04
java并发学习24:固定运行顺序模式
2019-03-04
html5学习9:HTML5文档结构详解
2019-03-04
介绍一个不错的分析客户价值的模型RFM
2019-03-04
SpringMVC---使用
2019-03-04
2.2.4 加减法运算和溢出判断更换
2019-03-04
2.2.6 强制类型转换
2019-03-04
计算机网络教程 谢希仁 第三章 数据链路层
2019-03-04
Redis缓存数据的处理流程
2019-03-04
Linux:文件句柄泄漏问题
2019-03-04
Linux:多线程简介
2019-03-04
【java】316. 去除重复字母----学会栈的使用
2019-03-04
【java】227. 基本计算器 II---思路简单,代码清晰!!!
2019-03-04
【java】115. 不同的子序列----学会动态规划,时间复杂度O(n^2)!!!
2019-03-04