
另一个树的子树
发布日期:2021-05-12 22:06:00
浏览次数:10
分类:精选文章
本文共 995 字,大约阅读时间需要 3 分钟。
题目描述:
给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看作它自身的一棵子树。思路:
要判断 t 是否是 s 的子树,我们可以通过比较 s 的每一个节点及其子树结构与 t 是否匹配。一旦发现这样的结构,就可以确定 t 是 s 的子树。具体来说,使用递归的方法来比较每一个节点及其对应的左右子树。递归终止的条件是遇到空值,或者当前节点的值与 t 对应节点的值不符。在递归中,我们需要比较两个节点的左右子树是否分别相同。如果其中有任何一个条件不满足,说明这些子树不相等,从而结束递归。否则,返回 true 表示两棵子树相同。
代码实现:
boolean isSameTree(TreeNode p, TreeNode q) { if (p == null && q == null) return true; if (p == null || q == null) return false; if (p.val != q.val) return false; return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);}boolean isSubtree(TreeNode root, TreeNode subRoot) { if (root == null) return false; if (isSameTree(root, subRoot)) return true; return isSubtree(root.left, subRoot) || isSubtree(root.right, subRoot);}
代码解释:
首先,isSameTree
函数用于判断两个节点及其子树是否相同。通过递归比较两个节点的值以及左右子树的相对应节点是否相同,确保结构和值都一致。如果有任何不一致情况,返回 false;否则返回 true。 其次,isSubtree
函数用于检查给定根节点的树是否包含与子根节点的树完全相同的子树。递归地检查树中的每一个节点作为子树根的情况,如果找到与子根对应的子树,返回 true;否则,返回 false。
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月23日 18时05分10秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
[白话解析] 深入浅出熵的概念 & 决策树之ID3算法
2019-03-06
[梁山好汉说IT] 梁山好汉和抢劫银行
2019-03-06
[源码解析] 消息队列 Kombu 之 基本架构
2019-03-06
[源码分析] 消息队列 Kombu 之 启动过程
2019-03-06
[源码分析] 消息队列 Kombu 之 Consumer
2019-03-06
抉择之苦
2019-03-06
wx.NET CLI wrapper for wxWidgets
2019-03-06
ASP.NET MVC Action Filters
2019-03-06
WCF WebHttp Services in .NET 4
2019-03-06
Powershell中禁止执行脚本解决办法
2019-03-06
HTTP协议状态码详解(HTTP Status Code)
2019-03-06
OO_Unit2 多线程电梯总结
2019-03-06
04_Mysql配置文件(重要参数)
2019-03-06
python 序列化及其相关模块(json,pickle,shelve,xml)详解
2019-03-06
js编写动态时钟
2019-03-06
JavaSE总结
2019-03-06