博客
关于我
另一个树的子树
阅读量:556 次
发布时间:2019-03-09

本文共 985 字,大约阅读时间需要 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。

转载地址:http://polpz.baihongyu.com/

你可能感兴趣的文章
如何选择三种验证类型的https证书
查看>>
thinkphp使用163/126邮箱发送
查看>>
解决Nginx 404 not found问题
查看>>
计算机网络之第三章笔记--数据链路层
查看>>
创建型模式之简单工厂模式实例及代码操作
查看>>
广东外语外贸大学第三届网络安全大赛Writeup
查看>>
跟着燕青学分布式事务控制技术方案
查看>>
Activiti视频分享
查看>>
VS2019 报错: LINK Error 无法找到 MSCOREE.lib的解决办法
查看>>
关于JS中的内存溢出与内存泄漏
查看>>
Vue——v-model结合值绑定写法
查看>>
JS实现防抖与节流(使用按钮触发事件)
查看>>
React 学习笔记 —— refs 属性的三种书写方式
查看>>
React 学习笔记 —— Fragment
查看>>
CCF 模拟2-1 夏令营
查看>>
第八届蓝桥杯——杨辉三角
查看>>
算法训练——字符串合并
查看>>
信息学奥赛一本通【题目索引 + 解答】
查看>>
MySQL事务
查看>>
什么时候需要重写HashCode()
查看>>