博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指 Offer 26. 树的子结构
阅读量:4101 次
发布时间:2019-05-25

本文共 785 字,大约阅读时间需要 2 分钟。

题目

输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)

B是A的子结构, 即 A中有出现和B相同的结构和节点值。
例如:
给定的树 A:
3
/
4 5
/
1 2
给定的树 B:
4
/
1

示例1:

输入:A = [1,2,3], B = [3,1]

输出:false

思路:

1.B为空,默认是A的子树
2.A为空,或者A的根节点和B的根节点不同,False (递归头–出口)
3.写判断循环函数,判断两棵树的左节点和右节点作为跟节点时是否符合1、2的情况(拓展部分)递归体
4.递归范围,A左,B、A右,B

# Definition for a binary tree node.# class TreeNode(object):#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution(object):	def isSubStructure(self,A,B):		'''		:type A:TreeNode		:type B:TreeNode		:rtype:bool		'''		def recur(A,B):			if not B: return True			if not A or(A.val!=B.val):return False			return recur(A.left,B.left) and recur(A.right,B.right)		return bool(A and B) and (recur(A,B) or isSubStructure(A.left,B) or isSubStructure(A.right,B))

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

你可能感兴趣的文章
python-OpenCV-鼠标交互
查看>>
java-抽象与接口来输出电脑的显卡
查看>>
python-OpenCV-答题卡识别
查看>>
python-OpenCV信用卡数字识别
查看>>
Java程序员面试必备的一些流程图
查看>>
使用Redis实现延时任务
查看>>
日志排查问题困难?分布式日志链路跟踪来帮你
查看>>
解决Spring Cloud Alibaba/Spring Cloud整合Zipkin后的报错问题
查看>>
confd + Nacos | 无代码侵入的配置变更管理
查看>>
JVM内存结构最难的面试题
查看>>
MySQL查询成本和范围区间
查看>>
Redis基础都不会,好意思出去面试?
查看>>
什么场景下不应该使用 TypeScript?
查看>>
今天我们就来讲讲怎么看源码
查看>>
面试再问ThreadLocal,别说你不会
查看>>
算法一看就懂之「 队列 」
查看>>
日均7亿交易量,如何设计高可用的MySQL架构?
查看>>
算法一看就懂之「 队列 」
查看>>
超级全面的MySQL优化面试解析
查看>>
面试官:生产环境碰到系统CPU飙高和频繁GC,你要怎么排查? 白天不懂夜的黑
查看>>