LeetCode如何判断树的子结构
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,小编给大家分享一下LeetCode如何实现树的子结构,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!题目描述输入两棵二叉树
千家信息网最后更新 2025年12月01日LeetCode如何判断树的子结构
小编给大家分享一下LeetCode如何实现树的子结构,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
题目描述
输入两棵二叉树 A 和 B,判断 B 是不是 A 的子结构。(约定空树不是任意一个树的子结构)
B 是 A 的子结构, 即 A 中有出现和 B 相同的结构和节点值。
例如: 给定的树 A:
3
/ \
4 5
/ \
1 2
给定的树 B:
4
/
1
返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。
0 <= 节点个数 <= 10000
题目样例
示例 1
输入
A = [1,2,3], B = [3,1]
输出
false
示例 2
输入
A = [3,4,5,1,2], B = [4,1]
输出
true
题目思考
子结构有哪些性质?
解决方案
思路
分析题目, B 是 A 的子结构的话, 那么 B 的节点结构需要完全是 A 的某一部分, 而且该部分中的一部分子树可以不在 B 中(例如题目中 A 的 2 号节点就不在 B 中) 所以我们可以额外定义一个方法, 来递归比较当前 A 和 B 节点是否满足子结构关系 然后从 A 和 B 的根节点开始调用该方法, 如果当前满足条件就直接返回 true, 否则就将 A 移动到其左右子节点位置, 重新与 B 的根节点比较即可 下面代码中有详细的注释, 方便大家理解
复杂度
时间复杂度 O(MN)假设 A 和 B 的节点数目分别是 M 和 N, 那么最差情况是对于每个 A 节点, 都要调用一次 match 方法遍历整个 B 树, 所以时间复杂度是 O(MN)空间复杂度 O(M)isSubStructure 递归调用则最多使用 O(M)递归栈空间, match 递归调用使用O(min(M, N))递归栈空间, 所以整体空间复杂度为O(M)
代码
class Solution:
def isSubStructure(self, A: TreeNode, B: TreeNode) -> bool:
if not A or not B:
# 根据题意, B如果是空树一定不满足条件, 而A是空树的话B更不可能是其子结构了
return False
def match(a, b):
if not b:
# 因为A的子树部分可以有部分节点是B没有的, 所以如果当前b节点是空的话是满足条件的情况, 直接返回true
return True
if not a:
# 此时b节点还有值, 但a节点是空了, B不可能是A的子结构
return False
# 既要当前a和b的值相等, 同时各自左右子树部分也要匹配
return a.val == b.val and match(a.left, b.left) and match(
a.right, b.right)
# B是A的子结构的充要条件: 要么当前A和B匹配, 要么A的左右子节点和B匹配
return match(A, B) or self.isSubStructure(
A.left, B) or self.isSubStructure(A.right, B)以上是"LeetCode如何实现树的子结构"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
节点
子结构
复杂
复杂度
题目
递归
空间
部分
子树
方法
条件
篇文章
结构
输入
相同
代码
内容
情况
时间
示例
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
扩展dns服务器未响应
中班网络安全教育课后反思
数据库如何看用的默认编码
打电话老显示服务器出错
数据库技术发展的现状和趋势
观看网络安全警示教育片新闻
软件开发费要交印花税
数据库连接有并发吗
软件开发与应用实习报告
网络安全中注入是什么意思
数字化软件开发岗
给党一封信 网络安全你我他
班级网络安全声明
存储服务器日志中的id是什么
软件开发培训需要多长时间
数据库的特点是集成性
pe服务器挂
服务器里的东西删了怎么找回
自建服务器下载速度慢
荆楚幻维软件开发公司
常用的五种安全网络技术
用网络安全工程师证可以做什么
blue coat服务器
触摸屏编程与数据库
新华三服务器怎么安装
服务器关闭磁盘自检
e1000 服务器
北京美瑞恒信网络技术
计算机网络技术教程第四版答案
工信部网络安全供应商