题目描述:
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)

思路:
本题可以分为两步,第一步:找到A中与B的根结点值相等的结点R,第二步:判断以R为根结点的子树是否包含B一样的结构。本题思路不难,但是需要格外注意对指针空值的判断。

# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:def HasSubtree(self, pRoot1, pRoot2):# write code hereresult = Falseif pRoot1 and pRoot2:if pRoot1.val == pRoot2.val:result = self.iseuqual(pRoot1, pRoot2)# 判断左子树中是否包含B树结构if not result:result = self.HasSubtree(pRoot1.left, pRoot2)# 判断右子树中是否包含B树结构if not result:result = self.HasSubtree(pRoot1.right, pRoot2)return resultdef iseuqual(self, root1, root2):# 如果B树为空,那么可以算B是A的子结构if not root2:return True# 如果A树空,而B树不空,那么B不是A的子结构if not root1:return Falseif root1.val != root2.val:return False# 根节点值相同,在判断左右子树是否都相同return self.iseuqual(root1.left, root2.left) and self.iseuqual(root1.right, root2.right)

《剑指offer》【树的子结构】(python版)相关推荐

  1. 剑指 offer 树的子结构

    子树和子结构的区别 这棵大树的子树有: 4 和 5 对应的两棵子树 3 本身自己完整的一棵树 而里面的小框圈出来的不是 3 这棵大树的子树! 还是上面那张图,子结构就是不用那么严格,图中的小框就是整棵 ...

  2. 剑指offer全套题解:Python版

    1. 二叉树的镜像 class Solution:def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:if ...

  3. 剑指offer 树的子结构

    题目描述 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 解决方案: /** public class TreeNode {int val = 0;Tree ...

  4. 剑指offer——树的子结构

    Q:输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) A:要查找树A中是否存在和树B结构一样的子树.我们可以分为两步: 第一步在树A中找到和B的根节点一样的值 ...

  5. 剑指offer:跳台阶 python 实现

    题目 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 解题思路 草稿上想了想,这道题跟剑指offer: 斐波那契数列 ...

  6. 剑指Offer_17_树的子结构

    题目描述 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 解题思路 首先判断 A 和 B 是否是空,如果为空,返回false:否则找到 A 和 B 的根结点 ...

  7. 【LeetCode笔记】剑指 Offer 26-. 树的子结构 (Java、双重dfs、二刷)

    文章目录 题目描述 思路 & 代码 二刷 题目描述 思路很值得看的一道题,和之前路径总和 III的双递归思路.结构很像 思路 & 代码 isSubStructrue() 进行一个前序的 ...

  8. 《剑指 Offer》(第 2 版) 题解(Python 语言实现)第 41-50 题

    文章目录 @[toc] 第 41 题:数据流中的中位数 第 42 题:连续子数组的最大和 第 44 题:数字序列中某一位的数字 同 LeetCode 第 400 题:[400. 第 N 个数字](ht ...

  9. 2021-06-28剑指offer26.树的子结构

    自顶向下遍历,自底向上返回. 先逐层比较,然后再传递,相当于前序遍历的模板 由于只要有一个true都可能为true,所以在比较返回的过程中全部为或的关系. 什么时候应该返回呢? 1)在遍历的过程中,当 ...

  10. DayN剑指offer树基础

    //树的前序中序后续递归非递归+层序+按照每层节点输出 package baselearning.tree;import java.util.*;class TreeNode {String val; ...

最新文章

  1. 图片和文件上传的两款插件
  2. 【java】异常的分类
  3. C++ Primer 5th笔记(chap 19 特殊工具与技术)malloc 函数与 free 函数
  4. c语言 执行free函数程序被卡住,FreeRTOS操作系统,在按键中断函数中恢复被挂起的任务,程序卡死的原因和解决办法...
  5. 【浅谈DOM事件的优化】
  6. 【CCF】201712-2游戏
  7. 资源分享 | 知识蒸馏总结、应用与扩展(2015-2019)
  8. 菜鸟学了SpringBoot后,撸了个博客项目(大神跳过哈)
  9. 【转】软件开发常用术语
  10. 中科方德桌面操作系统_兆芯CPU与中科方德新版桌面/服务器操作系统完成互认证...
  11. 拼接sql语句参数绑定
  12. 腾讯这次组织变革是过渡的
  13. vmware ubuntu server(服务器) 屏幕显示不全
  14. linuxping百度未知的名称或服务_有赞怎么打通百度小程序?开通有什么好处?
  15. Frida Hook Android App 进阶用法之 Java 运行时
  16. centos查看端口占用情况
  17. 什么是文件包含漏洞?文件包含漏洞分类!
  18. 有关tomcat的安装与配置问题
  19. OWASP A2 Cryptographic Failures(加密机制失效)
  20. 大学计算机高数如何学,计算机科学系如何学好大学数学,即高数,老师上课听不太懂,急啊,数列的极限就不怎么懂,跪求高人指点...

热门文章

  1. majordomo邮件列表快速安装指南
  2. signature=45daf61b5b0148091099c19a080e3802,CSR文件和P10文件
  3. c语言编写一个火车票,火车票完整系统(C语言)【报告版带截图】.doc
  4. dm365的LCD显示
  5. Hadoop+Hbase+Springboot实现企业能源消耗监测大数据分析系统
  6. 【图像识别】训练一个最最简单的AI使其识别Vtuber
  7. VS Code 设置缩进为4个空格
  8. Win8系统优化,享受飞一般的感觉!
  9. 21计算机考研时间,湖北2020计算机考研初试成绩公布时间2月21日起
  10. m.soudashi.cn 地图_上海网站推广的最有效方法