当前位置: 首页 > 编程日记 > 正文

刻意练习:LeetCode实战 -- Task19. 相同的树

背景

本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式,即选择了五个知识点(数组、链表、字符串、树、贪心算法),每个知识点选择了 三个简单、两个中等、一个困难 等级的题目,共计三十道题,利用三十天的时间完成这组刻意练习。

本次任务的知识点:树

是一种抽象数据类型(ADT)或是实现这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由 n(n>0) 个有限节点组成的一个具有层次关系的集合。

把它叫做「树」是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。

它具有以下的特点:

  • 每个节点都只有有限个子节点或无子节点;
  • 没有父节点的节点称为根节点;
  • 每一个非根节点有且只有一个父节点;
  • 除了根节点外,每个子节点可以分为多个不相交的子树;
  • 树里面没有环路。

题目

  • 题号:100
  • 难度:简单
  • https://leetcode-cn.com/problems/same-tree/

给定两个二叉树,编写一个函数来检验它们是否相同。

如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

示例 1:

输入:      1         1/ \       / \2   3     2   3[1,2,3],   [1,2,3]输出: true

示例 2:

输入:      1          1/           \2             2[1,2],     [1,null,2]输出: false

示例 3:

输入:      1         1/ \       / \2   1     1   2[1,2,1],   [1,1,2]输出: false

实现

C# 语言

  • 执行结果:通过
  • 执行用时:160 ms, 在所有 C# 提交中击败了 5.85% 的用户
  • 内存消耗:24 MB, 在所有 C# 提交中击败了 6.67% 的用户
/*** Definition for a binary tree node.* public class TreeNode {*     public int val;*     public TreeNode left;*     public TreeNode right;*     public TreeNode(int x) { val = x; }* }*/public class Solution
{public bool IsSameTree(TreeNode p, TreeNode q){//递归终止条件if (p == null && q == null)return true;if (p != null && q != null && p.val == q.val){return IsSameTree(p.left, q.left)&& IsSameTree(p.right, q.right);}return false;}
}

Python 语言

  • 执行结果:通过
  • 执行用时:40 ms, 在所有 Python3 提交中击败了 39.08% 的用户
  • 内存消耗:13.4 MB, 在所有 Python3 提交中击败了 5.27% 的用户
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = Noneclass Solution:def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:if p is None and q is None:return Trueif p is not None and q is not None and p.val == q.val:return self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right)else:return False

往期活动

LSGO软件技术团队会定期开展提升编程技能的刻意练习活动,希望大家能够参与进来一起刻意练习,一起学习进步!

  • Python基础刻意练习活动即将开启,你参加吗?
  • Task01:变量、运算符与数据类型
  • Task02:条件与循环
  • Task03:列表与元组
  • Task04:字符串与序列
  • Task05:函数与Lambda表达式
  • Task06:字典与集合
  • Task07:文件与文件系统
  • Task08:异常处理
  • Task09:else 与 with 语句
  • Task10:类与对象
  • Task11:魔法方法
  • Task12:模块

我是 终身学习者“老马”,一个长期践行“结伴式学习”理念的 中年大叔

我崇尚分享,渴望成长,于2010年创立了“LSGO软件技术团队”,并加入了国内著名的开源组织“Datawhale”,也是“Dre@mtech”、“智能机器人研究中心”和“大数据与哲学社会科学实验室”的一员。

愿我们一起学习,一起进步,相互陪伴,共同成长。

后台回复「搜搜搜」,随机获取电子资源!
欢迎关注,请扫描二维码:

相关文章:

找Java培训机构需要注意那些

​ java技术在互联网行业已经是众所周知的一个编程热门技术,市面上也出现了很多java培训机构,那么想要找到一个适合自己且比较专业的java培训机构应该注意哪些呢?下面小编就为大家详细的介绍一下找Java培训机构需要注意那些? ​  找Java培训机构需要…

字符串的最大相似匹配

字符串的最大相似匹配计划中,kmp完后,本篇继续。。。转载于:https://www.cnblogs.com/springmvc-hibernate/archive/2011/12/31/2484048.html

刻意练习:LeetCode实战 -- Task20. 对称二叉树

背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式,即选择了五个知识点(数组、链表、字符串、树、贪心算法),每个知识点选择了…

洛谷 P1598 垂直柱状图【字符串+模拟】

P1598 垂直柱状图 题目描述 写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过72个字符),然后用柱状图输出每个字符在输入文件中出现的次数。严格地按照输出样例来安排你的输出格式。 输入输出格式 输入格式&…

java开发培训中消息中间件的优势有哪些

系统解耦 交互系统之间没有直接的调用关系,只是通过消息传输,故系统侵入性不强,耦合度低。 提高系统响应时间 例如原来的一套逻辑,完成支付可能涉及先修改订单状态、计算会员积分、通知物流配送几个逻辑才能完成;通过MQ 架构设计&…

UIView 的 autoresizingMask 属性 详解。

在 UIView 中有一个autoresizingMask的属性,它对应的是一个枚举的值(如下),属性的意思就是自动调整子控件与父控件中间的位置,宽高。 enum { UIViewAutoresizingNone 0, UIViewAutoresizingFle…

刻意练习:LeetCode实战 -- Task21. 二叉树的最大深度

背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式,即选择了五个知识点(数组、链表、字符串、树、贪心算法),每个知识点选择了…

spring中@value注解需要注意

转自:https://blog.csdn.net/qiuhan/article/details/47089329 首先,value需要参数,这里参数可以是两种形式:Value("#{configProperties[t1.msgname]}")或者Value("${t1.msgname}"); 其次&#xf…

学Java需要用到的软件快收藏!

java编程语言学起来是比较繁琐的,很多java工程师不管是工作还是学习,都会用到一些辅助工具,对于想要学习java技术的人来说,利用java辅助软件学习会比较更有效率,下面小编就为大家一一整理一下学Java需要用到的软件有哪…

刻意练习:LeetCode实战 -- Task22. 二叉树的中序遍历

背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式,即选择了五个知识点(数组、链表、字符串、树、贪心算法),每个知识点选择了…

Oracle round函数是什么意思?怎么运用?

如何使用 Oracle Round 函数 (四舍五入) 描述 : 传回一个数值,该数值是按照指定的小数位元数进行四舍五入运算的结果。 SELECT ROUND( number, [ decimal_places ] ) FROM DUAL 参数: number : 欲处理之数值 decimal_places : 四舍五入 , 小数取几位 ( 预设为 0 ) S…

Spring MVC前后端的数据传输

本篇文章主要介绍了Spring MVC中如何在前后端传输数据。 后端 ➡ 前端 在Spring MVC中这主要通过Model将数据从后端传送到前端,一般的写法为: RequestMapping(value "/index", method RequestMethod.POST) public String index(Model model)…

参加java培训,要避免这几个误区!

​ java技术在近几年学习的人越来越多,小编在这里提醒同学们,想要学好java技术,除了报班系统培训之外,还要找到适合自己的学习方法,以下几点误区同学们一定要避免! ​  参加java培训,要避免这几个误区! 1…

SQL优化整理。

其实SQL能力很差劲,简单查询还成,复杂查询以及优化,基本脑子里没有概念。了解一下概念,然后打算找本理论书好好看看。 先到处找了些优化的sql,整理出来,记录一下。1、对查询进行优化,应尽量避免…

PHP开发框架之YII框架学习——碾压ThinkPHP不是梦

前 言 JRedu 程序猿是一种慵懒的生物!能少敲一行代码,绝对不会多敲一个字符!所以,越来越多的开发框架应运而生,在帮助我们完成功能的同时,极大程度上也帮我们节省了人力物力,而且也提高了系统的…

刻意练习:LeetCode实战 -- 二叉树的前序遍历

背景 今天,第二期基础算法(Leetcode)刻意练习训练营 的打卡任务是二叉树的中序遍历,由于二叉树的遍历方式通常来说有四种:前序遍历、中序遍历、后序遍历以及层次遍历,而LeetCode也有二叉树的前序遍历题目&…

接口测试要如何做数据准备

数据准备是接口测试过程中不可或缺的一步,也是花费时间很长的工作,因为程序的功能就是处理数据。那么在接口测试中,我们要怎样来准备数据呢?小编整理了以下一些关于数据准备的方法,希望对大家能有所帮助。 数据准备分为两种类型&…

刻意练习:LeetCode实战 -- 二叉树的后序遍历

背景 今天,第二期基础算法(Leetcode)刻意练习训练营 的打卡任务是二叉树的中序遍历,由于二叉树的遍历方式通常来说有四种:前序遍历、中序遍历、后序遍历以及层次遍历,而LeetCode也有二叉树的后序遍历题目&…

数据库加锁(转)

1 如何锁一个表的某一行 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED SELECT * FROM table ROWLOCK WHERE id 1 2 锁定数据库的一个表 SELECT * FROM table WITH (HOLDLOCK) 加锁语句: sybase: update 表 set col1col1 where 10 ; MSSQL: select col1 from …

学好web前端开发要注意哪些问题

web前端学起来是比较困难的,当然想要学好web前端技术,那么有一些注意事项一定是要看的,下面小编就为大家详细的介绍一下学好web前端开发要注意哪些问题? ​  学好web前端开发要注意哪些问题? 基础:无论做什么都一定要有扎实的…

Android include 标签

android中include标签是为了便于控件的覆用的一个很好解决方案。 但是也有一些需要注意的地方,下面是本人在项目中碰到过的一个问题,做此记录,便于以后查看。 include标签用法。 1.新建一个xml文件,命名 head.xml head.xml文件内容…

刻意练习:LeetCode实战 -- 不同的二叉搜索树

背景 今天,第二期基础算法(Leetcode)刻意练习训练营 的打卡任务是“不同的二叉搜索树 II”,而LeetCode也有“不同的二叉搜索树”题目,故一起写了。 题目 题号:96难度:中等https://leetcode-cn.…

15. Python 函数

1. 函数的写法,函数的调用【函数的一般形式】定义一个函数要有以下规则:(1)函数代码块以 def 关键词开头,后接函数标识符名称和小括号();(2)任何传入参数和自…

Java培训找什么样的机构比较好

​ Java培训找什么样的机构比较好?很多人都比较关注java技术,想要学习java技术,参加相关工作,但如今市面上的java培训机构那么多,怎么样选择比较靠谱呢?来看看下面的详细介绍吧。 ​  Java培训找什么样的机构比较好?小编这里…

刻意练习:LeetCode实战 -- Task23. 不同的二叉搜索树 II

背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式,即选择了五个知识点(数组、链表、字符串、树、贪心算法),每个知识点选择了…

windows phone 越狱教程:利用学生帐号解锁并部署软件教程(图文并茂)

之前老是看到有学生帐号可以越狱,但一直以来都觉得比较复杂,不想下手.近日,TX微信出来了,很多人都想装,可是装不了,所以下决心研究一下学生帐号越狱.网上看教程,发现很多都是不全面,有些只有一半,最后还是决定按我自己申请学生帐号时的流程写一个教程,希望对大家有所帮助. 学生…

基于web创建逼真的3D图形 | CSS技巧

在成为一名web开发者之前,我从事于视觉设计行业,创造屡获殊荣,电影和电视节目等高端3D效果,例如 Tron, The Thing, Resident Evil,和 Vikings 。为了能够创造这些效果,我们需要使用高度复杂的动画软件,例如…

jQuery元素内容操作的方法有多少种?

jQuery中操作元素内容的方法,主要包括html()方法、text()方法和val()方法。html()方法用于获取或设置元素的HTML内容,text()方法用于获取或设置元素的文本内容,val()方法用来获取或设置表单元素的value值。具体使用说明如表1所示。 表1 元素内…

获取SQLServer数据库中所有表

对于获取SQLSERVER数据库中所有表,首先第一步引有SQLDMO.dll 找到文件路径: C:\Program Files\Microsoft SQL Server\80\Tools\Binn\SQLDMO.dll 找到SQLDOM.DLL //在后台写方法 using System;using System.Collections.Generic;using System.Linq;using Syst…

刻意练习:LeetCode实战 -- Task24. 恢复二叉搜索树

背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式,即选择了五个知识点(数组、链表、字符串、树、贪心算法),每个知识点选择了…