力扣每日一题:872.叶子相似的树

Leetcode 872:叶子相似的树(超详细的解法!!!) 请考虑一颗二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。 举个例子,如上图所示,给定一颗叶值序列为 (6, 7, 4, 9, 8) 的树。 如果有两颗二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。 如果给定的两个头结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。 提示: 给定的两颗树可能会有 ... 阅读详情

872.叶子相似的树

https://leetcode-cn.com/problems/leaf-similar-trees/

难度:简单

题目:

请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。

举个例子,如上图所示,给定一棵叶值序列为(6, 7, 4, 9, 8)的树。

如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是叶相似的。

如果给定的两个根结点分别为root1 和root2的树是叶相似的,则返回true;否则返回 false 。

示例:

示例 1:

输入:root1 = [3,5,1,6,2,9,8,null,null,7,4], root2 = [3,5,1,6,7,4,2,null,null,null,null,null,null,9,8]
输出:true

示例 2:

输入:root1 = [1], root2 = [1]
输出:true

示例 3:

输入:root1 = [1], root2 = [2]
输出:false

示例 4:

输入:root1 = [1,2], root2 = [2,2]
输出:true

示例 5:

输入:root1 = [1,2,3], root2 = [1,3,2]
输出:false

分析

二叉树搜索叶子结点,要求我们对深度优先的方法具备相关掌握即可完成解题。
在深度优先搜索的过程中,我们总是先搜索当前节点的左子节点,再搜索当前节点的右子节点。
这里由于要搜索两个二叉树的叶子结点,所以单独抽离出dfs方法,进行调用后判断结果

解题:

# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right

class Solution:
    def leafSimilar(self, root1: TreeNode, root2: TreeNode) -> bool:
        def dfs(root, ret):
            if not root.left and not root.right:
                ret.append(root.val)
                return
            if root.left:
                dfs(root.left, ret)
            if root.right:
                dfs(root.right, ret)

        ret1 = []
        dfs(root1, ret1)
        ret2 = []
        dfs(root2, ret2)
        return ret1 == ret2

欢迎关注我的公众号: 清风Python,带你每日学习Python算法刷题的同时,了解更多python小知识。

我的个人博客:https://qingfengpython.cn

力扣解题合集:https://github.com/BreezePython/AlgorithmMarkdown

使用sysbench对Oracle做基准测试(-) 安装篇 sysbench是一款开源的多线程性能测试工具, 可以执行CPU/内存/线程/IO/数据库等方面的性能测试。数据库目前支持MySQL/Oracle/PostgreSQL。 阅读详情

相关推荐

从ESP/ABS选型看轮速传感器:为什么你的车用了AK+PWM+7/14mA三种协议?

本文深入解析了汽车轮速传感器的三种主流协议(7/14mA电流型、PWM型和AK协议型)及其混合应用场景。通过对比不同协议的技术特点、成本效益和工程挑战,揭示了现代车辆采用多种传感器协议背后的设计逻辑,包括成本控制、性能平衡和冗余设计等关键因素。

weixin_29266679的博客 534

LeetCode——872.叶子相似的树

872.叶子相似的树 题目: 请考虑一颗二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。 举个例子,如上图所示,给定一颗叶值序列为 (6, 7, 4, 9, 8) 的树。 如果有两颗二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。 如果给定的两个头结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。 提示: 给定...

weixin_43551575的博客 296

Matlab之fdesign的应用说明

fdesign 是 MATLAB 中用于数字滤波器设计的工具(属于),它提供了一种系统化的方式来定义滤波器参数并生成相应的滤波器。指定滤波器的频率、幅度等参数。例如,设计一个低通滤波器:Fs = 1000;% 采样率 (Hz)% 通带截止频率% 阻带截止频率Apass = 1;% 通带衰减 (dB)Astop = 60;% 阻带衰减 (dB)

嵌入式老牛的博客 1054

【Leetcode】872. 叶子相似的树

题目描述: 考虑一个二叉树的所有叶子。这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。 举个例子,给定一个如上图所示的树,其叶值序列为 (6, 7, 4, 9, 8) 。 如果两个二叉树的叶值序列相同,我们就认为它们是 叶相似的。 如果给定的两个头结点分别为 root1 和 root2 的树是叶相似的,返回 true;否则返回 false 。 提示: 给定的两个树会有 1 到...

EasonWong的博客 1144

IP-guard发布新版本4.87.2241.0

IP-guard发布了新版本4.87.2241.0,用户可通过提供的下载地址获取完整安装包和升级包。下载后,用户需联系厂家申请测试序列号以进行安装和使用。IP-guard是一款专注于企业文件加密、文档加密系统、防泄密软件、数据安全的软件。

IP-Guard专栏 1532

北斗导航 | 卫星/惯导组合导航方法

从组合导航结构方面来讲,卫星/惯导(下文以GPS/INS)组合模式一般分为三种,即松组合、紧组合和超紧组合(即深组合)。

尘世冰封的专栏 1543

[20210510]LeetCode每日一题 - 872. 叶子相似的树

题目描述 【简单】 请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。 举个例子,如上图所示,给定一棵叶值序列为 (6, 7, 4, 9, 8) 的树。 如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。 如果给定的两个根结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。 示例 1: 输入:root1 = [3,5,1,6,2,9,8,null,null,7,4], root2 = [3,5,1,

全栈攻城狮? 204

我的AI个人公司成立:基于Skills与Qwen大模型的智能问答平台实战开发+龙虾团队

微学AI推出数字员工矩阵,包含10个核心AI角色(总经理、秘书、工程师等),每个角色具备专属技能模块。系统采用FastAPI+Vue3技术栈,核心功能包括:基于SkillLoader的动态技能管理(支持脚本执行和文档加载)、WebSocket流式输出、多轮对话上下文管理。通过模块化架构实现AI自驱协作,可自主完成从需求分析到开发落地的全流程。项目亮点在于声明式技能配置和实时交互能力,打破传统办公壁垒,提升工作效率。

微学AI的博客 1630

leetcode 872叶子相似的树

872. 叶子相似的树 请考虑一颗二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个叶值序列 。 举个例子,如上图所示,给定一颗叶值序列为(6, 7, 4, 9, 8)的树。 如果有两颗二叉树的叶值序列是相同,那么我们就认为它们是叶相似的。 如果给定的两个头结点分别为root1 和root2的树是叶相似的,则返回true;否则返回 false 。 # D...

fang156239305的博客 308

Unity3D 加密 Assembly-CSharp.dll (Android平台) 防止反编译

0、加密的原理 Unity3D 是基于 Mono的,我们平时写的 C# 脚本都被编译到了 Assembly-CSharp.dll ,然后 再由 Mono 来加载、解析、然后执行。 Mono 加载 Assembly-CSharp.dll 的时候就是读取文件到内存中,和平时读取一个 游戏资源 文件没什么区别。 为了防止别人破解,我们会对游戏资源加密,简单点的 比如修改文件的一个字节 或者 位移一下

Circle 8726

12-RK平台U-Boot启动流程

先看概述,把这一章要回答的问题摆出来,带着问题听。RK 特有的 BootROM -> MiniLoader -> SPL -> U-Boot -> Kernel。这是因为 RK 平台使用闭源的 DDR 初始化固件,需要通过 MiniLoader 来加载和运行。为什么多一层?这是 RK 平台的特殊性决定的。RK 平台使用闭源的 DDR 初始化固件,这段代码 Rockchip 不开源,只能以二进制形式提供,它需要一个载体来加载和运行,这个载体就是 MiniLoader。

内核笔记 1150

【LeetCode每日一题】——872.叶子相似的树

请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。

IronmanJay 417

C#串口通信从入门到精通(26)——多个串口多个线程发送数据和接收数据

本文介绍如何在多个串口下使用多线程进行发送和接收数据,由高级工程师多年经验总结而成,绝对是串口领域的实战经验!

qq_34059233的博客 8708

LeetCode 每日一题 872.叶子相似的树

LeetCode 每日一题 872.叶子相似的树问题描述简要思路代码 问题描述 简要思路 昨天的每日一题,因种种原因忘了记录上传。 简单题,经典树的递归,两份代码是两种写法,应该算不上两种解法。写法2的三个if条件在树的题目还是蛮常用的。 代码 写法1: /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right;

SYSU_Zhiyuan 213

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

LeetCode每日一题3 - 872.叶子相似的树

题目名称:872.叶子相似的树 难度 :简单 题目描述 请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。 举个例子,如上图所示,给定一棵叶值序列为 (6, 7, 4, 9, 8) 的树。 如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。 如果给定的两个根结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。 示例1 输入:root1 = [3,5,1,6,2,9,8,null,null,7,4], roo

imageshhhh的博客 157

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

LeetCode刷题之路-每日一题-872. 叶子相似的树

前言 尽管今天有点困,有些累,但是坚持博客是不能落下的!继续日更! 昨天刚复习了树的结构,这不今天刚好每日一题就是有关树结构的。 题目描述 请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。 举个例子,如上图所示,给定一棵叶值序列为 (6, 7, 4, 9, 8) 的树。 如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。 如果给定的两个根结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。 来源:力扣(L

Evan_L的博客 221

LeetCode每日一题 872. 叶子相似的树

872. 叶子相似的树 语言:java 难度:简单 题目内容 请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。 如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。 如果给定的两个根结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。 解法分析 不知道为何,最近树的题目都是简单题,树的题目无外乎两种解决方式,dfs和bfs,也就是通常说的迭代和递归,迭代的方法一般比较简单。 这次无论用哪种遍历方法都可以(前序

ChasingSunny的博客 176

【每日刷题】Day48

1. 叶子相似的树 2. 二叉树展开为链表

2301_78022459的博客 1171

C语言每日一题(58) 叶子相似的树

递归细节:如果左右孩子都为空,说明递归到叶子结点了,就将这个结点的值放入数组,如果不是,如果左孩子存在,就递归到左孩子,如果右孩子存在,就递归到右孩子。请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个。如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是。举个例子,如上图所示,给定一棵叶值序列为。如果给定的两个根结点分别为。的树是叶相似的,则返回。

wcl312的博客 490

每日一道leetcode

请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个。如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是。举个例子,如上图所示,给定一棵叶值序列为。如果给定的两个根结点分别为。的树是叶相似的,则返回。

XiaoyaoCarter的博客 1117

每日一道算法题--leetcode 872--叶子相似的树(深度优先)--C++

【题目描述】 【代码思路】 这又是一个深度优先的例子,先解读一下题干,其实就是想从左至右的找到一颗树的所有叶结点,而遍历一棵树的所有结点,有深度优先和广度优先,这道题显然是深度优先更合适,因为广度优先是按层遍历的,不能保证从左至右找到所有叶结点,比如这道题广度优先找到的叶结点顺序就是[6,9,8,7,4]这不符合题目要求,所以用深度优先。 这种递归的题目,首先要抓住一个点理清递归的函数内...

transformed的博客 249

872. 叶子相似的树

2021-05-10 LeetCode每日一题 链接:https://leetcode-cn.com/problems/leaf-similar-trees/ 题目 请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。 举个例子,如上图所示,给定一棵叶值序列为 (6, 7, 4, 9, 8) 的树。 如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。 如果给定的两个根结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 f

秃头哥编程 273

leetcode每日一题—872.叶子相似的树

题目: 请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。 解答: # 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 Solu

jqq125的博客 136

leetcode每日一题-210510-叶子相似的树

leetcode每日一题-210510 872. 叶子相似的树 1.题目描述 872.叶子相似的树(简单) 请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。 举个例子,如上图所示,给定一棵叶值序列为 (6, 7, 4, 9, 8) 的树。 如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。 如果给定的两个根结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。 2.递归解法 思路 用深度优先算法分别得到两

weixin_43546781的博客 108

[C++&Rust]LeetCode No.872 叶子相似的树(每日一题)

原贴地址:http://blog.leanote.com/post/dawnmagnet/e25aa1655474 题目 思路分析 这个都没什么思路可以分析的,怎么获取从左到右的叶子节点,只有一种办法,就是中序遍历,在遍历的过程中判断节点是否叶子节点,存进一个数组即可。 对于两棵树,分别进行上述操作,获得两个叶子节点的数组,对比即可获得答案。 时间已经是最优的了,因为每个节点至少得访问一遍。也无需考虑空间占用率过大的问题,因为原本的遍历节点也是O(节点数目)复杂度的,所以我们这样操作不会使用很多的空间。

SGCTSGCT的博客 240

每日一道算法题--leetcode 872--叶子相似的树--C++

【题目描述】 【代码思路】 这又是一个深度优先的例子,先解读一下题干,其实就是想从左至右的找到一颗树的所有叶结点,而遍历一棵树的所有结点,有深度优先和广度优先,这道题显然是深度优先更合适,因为广度优先是按层遍历的,不能保证从左至右找到所有叶结点,比如这道题广度优先找到的叶结点顺序就是[6,9,8,7,4]这不符合题目要求,所以用深度优先。 这种递归的题目,首先要抓住一个点理清递归的函数内部逻辑,...

weixin_34259559的博客 193

【Leetcode】872. 叶子相似的树【每日一题系列20210510】

深度优先遍历 DFS 在深度优先搜索的过程中,我们总是先搜索当前节点的左子节点,再搜索当前节点的右子节点。如果我们搜索到一个叶节点,就将它的值放入序列中。 在得到了两棵树分别的「叶值序列」后,我们比较它们是否相等即可。 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # ..

m0_52083505的博客 132
上一篇: 力扣每日一题:1486.数组异或操作
下一篇: 力扣每日一题:1310.子数组异或查询
清风Python
博客等级 码龄7年 406粉丝 267原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值