
剑指offer打卡day17——AcWing 37. 树的子结构
遍历树A中的每一个节点,假设该节点为根节点,分别将树B与此根节点对齐进行比较。 同时遍历树B和当前对齐的树A的子树,逐层检查节点值和子节点是否一致。如果在某一层发现不一致,则说明当前对齐情况不满足子树关系,继续下一个节点的尝试。
发布日期:2021-05-08 21:31:38
浏览次数:23
分类:精选文章
本文共 1159 字,大约阅读时间需要 3 分钟。
【题目描述】
题目是判断一个二叉树A是否包含另一个二叉树B作为其子树。【思路】
为了判断树B是否是树A的子树,我们可以采用以下方法:代码实现如下:
public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } public class Solution { public boolean hasSubtree(TreeNode pRoot1, TreeNode pRoot2) { // 如果任意一个树为空,直接返回false if (pRoot1 == null || pRoot2 == null) { return false; } // 判断当前节点及其子树是否与目标树一致 if (isSame(pRoot1, pRoot2)) { return true; } // 递归检查左子树和右子树 return hasSubtree(pRoot1.left, pRoot2.left) || hasSubtree(pRoot1.right, pRoot2.right); } public boolean isSame(TreeNode root1, TreeNode root2) { // 如果右子树为空,左子树也必须为空才能满足条件 if (root2 == null) { return true; } // 检查当前节点值和子树结构是否一致 if (root1 == null || root1.val != root2.val) { return false; } // 递归检查左子树和右子树是否一致 return isSame(root1.left, root2.left) && isSame(root1.right, root2.right); } }
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年03月21日 04时44分33秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
(C++11/14/17学习笔记):线程启动、结束,创建线程多法、join,detach
2019-03-04
HTML 和 CSS 简单实现注册页面
2019-03-04
趣谈win10常用快捷键
2019-03-04
11.2.6 时间值的小数秒
2019-03-05
Redis源码分析(七)--- zipmap压缩图
2019-03-05
【MySQL】(九)触发器
2019-03-05
Oracle 11G环境配置
2019-03-05
【Python】(十二)IO 文件处理
2019-03-05
【Oozie】(三)Oozie 使用实战教学,带你快速上手!
2019-03-05
师兄面试遇到这条 SQL 数据分析题,差点含泪而归!
2019-03-05
C语言的数值溢出问题(上)
2019-03-05
8051单片机(STC89C52)以定时器中断模式实现两倒计时器异步计时
2019-03-05
vue项目通过vue.config.js配置文件进行proxy反向代理跨域
2019-03-05
android:使用audiotrack 类播放wav文件
2019-03-05
聊聊我的五一小假期
2019-03-05
数据库三个级别封锁协议
2019-03-05
ACM/NCPC2016 C Card Hand Sorting(upc 3028)
2019-03-05
ubuntu学习笔记-常用文件、命令以及作用(hosts、vim、ssh)
2019-03-05