这个系列算是出于个人兴趣开的一个新坑吧,最近看到同学刷LeetCode算法题,就想写写那些可以一行Python代码写出来的题目,因此本专栏的文章的解题方式效率不做保证,只为追求“一行的浪漫”。

题目

题解

给你两棵二叉树的根节点 pq ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。本题难度为Easy。

我们可以理解,根据base case,两个二叉树相同的条件为:两棵树都非空+根节点值相同+左子树相同+右子树相同。需要注意特判条件,如果两棵树都是空树那么必然相同;如果两棵树其中只有一棵树为空树那么必不相同。

代码

实现上我们可以通过递归来进行深度优先搜索,实现整个树的判断。

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:return True if not p and not q else bool((p and q) and (p.val == q.val) and self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right))

提交的反馈如下。

0100-Same Tree(相同的树)相关推荐

  1. C++Persistent segment tree持久段树的实现算法(附完整源码)

    C++Persistent segment tree持久段树的实现算法 C++Persistent segment tree持久段树的实现算法完整源码(定义,实现,main函数测试) C++Persi ...

  2. C++Fenwick tree芬威克树的实现算法(附完整源码)

    C++Fenwick tree芬威克树的实现算法 C++Fenwick tree芬威克树的实现算法完整源码(定义,实现,main函数测试) C++Fenwick tree芬威克树的实现算法完整源码(定 ...

  3. Android 驱动(12)---Linux DTS(Device Tree Source)设备树详解

    Linux DTS(Device Tree Source)设备树详解 Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇) Linux DTS(Device Tr ...

  4. 一首好听的英文歌lemon tree(柠檬树)的中文歌词

    一首好听的英文歌lemon tree(柠檬树)的中文歌词 lemon tree的中文 i'm sitting here in a boring room.我坐在这--一间空屋子里  it's just ...

  5. 高通平台msm8953 Linux DTS(Device Tree Source)设备树详解之二(DTS设备树匹配过程)

    本系列导航: 高通平台8953  Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇) 高通平台8953 Linux DTS(Device Tree Source ...

  6. 高通平台8953 Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇)

    本系列导航: 高通平台8953  Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇) 高通平台8953 Linux DTS(Device Tree Source ...

  7. tree shaking(摇树优化)

    tree shaking(摇树优化) 前言 随着js的不断发展,性能优化成了主流的方向,但是如何性能优化又成了现在程序员的一大苦恼,而我作为一名前端小白,也就深陷其中,最近学习到了tree shaki ...

  8. Linux DTS (Device Tree Source)设备树源码

    Linux DTS 设备树源码 1. 简介 1.1 引入DTS的原因 1.2 文件格式 2. DTS语法 2.1 .dtsi头文件 2.2 设备节点 2.2.1 设备树中节点命名格式 2.2.2 设备 ...

  9. 回溯法排序树怎么画_kd tree(k-dimensional树的简称)

    kd tree建立 计算各个维度方差最大的那一个.方差大说明沿该轴方向上的数据分散的越开.下图所示. 选择该特征的中位数作为分割点,小于该数的为左子树,大于的为右子树.这里用中位数是为了让左子树和右子 ...

  10. HDU 3333-Turing Tree(线段树解决离线询问)

    题意: 给定一个长度为n的序列,给定m个查询,每次查询区间[L,R]范围内不同元素的和. 题解: x,yx,yx,y为查询的区间左右端点 用一个数组left[i]left[i]left[i],表示左边 ...

最新文章

  1. 机器学习数据拆分_解释了关键的机器学习概念-数据集拆分和随机森林
  2. Linux 硬链接和软链接的区别
  3. git push代码到远程新分支
  4. Java 函数式编程和 lambda 表达式
  5. java入参为方法_Java命令注入原理结合Java Instrument技术(FreeBuf首发)
  6. java中CyclicBarrier的使用
  7. 微博php sdk,手机第三方新浪微博登录php api实现分析
  8. Bootstrap3 屏幕阅读器和键盘导航
  9. “以毒攻毒”?阿里将上线“二哈”防骚扰电话应用程序
  10. JavaScript:gb2312转unicode -- 形式
  11. 神调侃!程序员必学推荐系统,我比女朋友更了解你!
  12. Mybatis批量insert报错的解决办法【the right syntax to use near '' at line...】
  13. 服务器远程桌面一直正在配置,关于远程桌面一直显示正在配置远程会话
  14. react 中加载静态word文档(或加载静态的html文件)
  15. vue实例练习和vue样式练习
  16. nii格式转化为png格式或者img格式
  17. K3 CLOUD计划管理之计划方案(MPS/MRP)
  18. digest 词根 gest
  19. 【数据库系统工程师】第13章 云计算与大数据处理
  20. 功率放大器的输入阻抗和输出阻抗的关系

热门文章

  1. ConcurrentHashMap的源码分析-tabAt
  2. 类的加载连接和初始化
  3. tomcat_安装卸载启动
  4. 追踪源码自定义负载均衡策略
  5. Spring Security OAuth2源码解析(三)——单点登录。
  6. Java基础 — 异常
  7. RPC和MQ各自适合的应用场景
  8. 第一章:前端视角——js运行环境之node.js基础入门
  9. python exception的传递
  10. Android特效专辑(十二)——仿支付宝咻一咻功能实现波纹扩散特效,精细小巧的View...