【树-简单】872. 叶子相似的树

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

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

举个例子,如上图所示,给定一棵叶值序列为 (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

提示:

给定的两棵树可能会有 1 到 200 个结点。
给定的两棵树上的值介于 0 到 200 之间。

【代码】
【方法1 递归】
在这里插入图片描述

class Solution:
    def postOrder(self,root,flag):
        if not root:
            return
        self.postOrder(root.left,flag)
        if not root.left and not root.right:
            self.ans[flag].append(root.val)
        self.postOrder(root.right,flag)
    def leafSimilar(self, root1: TreeNode, root2: TreeNode) -> bool:
        self.ans=[[],[]]
        self.postOrder(root1,0)
        self.postOrder(root2,1)
        print(self.ans)
        return self.ans[0]==self.ans[1]

【方法2:迭代】
在这里插入图片描述

class Solution:
    def deal(self,node,flag):
        stack=[]
        while stack or node:
            while node:
                stack.append(node)
                node=node.left
            node=stack.pop()
            if not node.left and not node.right:
                self.ans[flag].append(node.val)
            node=node.right
    def leafSimilar(self, root1: TreeNode, root2: TreeNode) -> bool:
        if not root1 and not root2:
            return True
        if not root1 or not root2:
            return False
        self.ans=[[],[]]
        self.deal(root1,0)
        self.deal(root2,1)
        return self.ans[0]==self.ans[1]

【方法3 】
在这里插入图片描述

class Solution:
    def leafSimilar(self, root1: TreeNode, root2: TreeNode) -> bool:
        def dfs(node: TreeNode):
            if not node.left and not node.right:
                yield node.val
            else:
                if node.left:
                    yield from dfs(node.left)
                if node.right:
                    yield from dfs(node.right)
        
        seq1 = list(dfs(root1)) if root1 else list()
        seq2 = list(dfs(root2)) if root2 else list()
        return seq1 == seq2

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

相关推荐

内网环境下的高德地图离线化实战:从瓦片下载到交互功能集成

本文详细介绍了在内网环境中部署离线高德地图的完整实战方案。针对军工、能源、金融等对网络隔离与数据安全有严格要求的场景,文章核心解决了离线地图的两大基石:地图瓦片数据的高效下载与本地化,以及高德地图JS API的获取与插件集成。通过具体代码示例,进一步讲解了如何实现地图初始化、海量点标注与聚合、自定义图标及框选查询等核心交互功能,并分享了内网部署的路径配置、性能优化及法律合规等关键注意事项,为开发者在封闭网络环境下构建稳定、可控的地图应用提供了清晰指南。

Apple的专栏 395

leetcode[872]叶子相似的树 Python3实现 (dfs获得二叉树叶子的集合)

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

zhang35的博客 236

双RTX 3090实战:如何用vLLM低成本部署Qwen2.5-14B大模型(附避坑清单)

本文详细介绍了如何利用双RTX 3090显卡低成本部署Qwen2.5-14B大模型的完整指南,包括硬件选型、环境配置、vLLM优化及生产环境调优。重点解析了BF16混合精度在显存占用与推理质量上的平衡策略,并提供了实用的避坑清单和性能调优技巧,帮助开发者高效实现大模型部署。

pz890123456的博客 702

二叉树dfs遍历

给一棵点带权(权值各不相同,都是小于10000的正整数)的二叉树的中序序列和后序遍历,找一个叶子使得它到根的路径上的权和最小。如果有多解,该叶子本身的权值应尽量小。 输入 每两行表示一棵树,其中第一行为中序遍历,第二行为后序遍历。 输出 输出叶子的权值 样例输入 3 2 1 4 5 7 6 3 1 2 5 6 7 4 7 8 11 3 5 16 12 18 8 3 11 7 16 1...

a814894394的博客 2311

macOS 27下PlayCover“没有权限打开”的完整修复指南

macOS系统通过Gatekeeper、TCC(透明、同意与控制)和安全启动等机制,对第三方应用进行层层校验,以防范恶意代码。这些机制会检查应用的隔离属性、签名状态以及所需系统权限,当任一环节不满足时,就会出现“没有权限打开”的提示。对于开发者工具或未上架App Store的开源软件,这类拦截尤为常见。尤其在macOS 27上,系统进一步收紧了绕过策略,导致PlayCover等工具无法正常启动。本文以PlayCover为例,详细解析权限链路上的三道关卡,并给出清除隔离属性、调整SIP状态、重置TCC记录等完

weixin_32612263的博客 756

【Oracle数据库】Oracle11g数据库下载与安装教程(超详细安装图解)

Oracle11g是Oracle公司出的一个比较轻量版的数据库,这里重点说一下在window系统上如何安装Oracle11g, Oracle11g是很早之前的安装包,win7 系统安装时不会遇到环境不满足最低要求的提示,win11系统安装时会提醒环境不满足,修改配置文件即可(注意:先安装oracle服务端/oracle客户端,再安装第三方工具(PL/ SQL Developer,DBeaver等)服务器端环境概述:ORACLE数据库版本:Oracle 11g 64位(11.2.0)

qq_34463511的博客 1万+

leetcode刷题记录【岛屿类题目】DFS—Python代码+详细注释

题目:200. 岛屿数量 难度:中等 算法:DFS+访问标记数组 class Solution: def numIslands(self, grid: List[List[str]]) -> int: visited = [[False for col in range(len(grid[0]))] for row in range(len(grid))] # 标记方式AAAA def dfs(grid, row, col): # 给终

weixin_41743584的博客 1653

差分信号_差分信号的原理及其在PCB的设计

差分线是 PCB 设计中非常重要的一部分信号线,信号处理要求也是相当严谨,今天为大家介绍下差分信号的原理以及其在 PCB 设计中的处理方法。 什么是差分信号 差分传输是一种信号传输的技术,区别于传统的一根信号线一根地线的做法,差分传输在这两根线上都传输信号,这两个信号的振幅相等,相位相差 180 度,极性相反。在这两根线上传输的信号就是差分...

weixin_31849185的博客 1812

python dfs算法_LeetCode | 一文帮你搞定BFS、DFS算法(python版)

模板方法使用BFS,DFS的题目,在leetcode上一般标记为medium或者hard。但从思维逻辑上看,其难度定义偏高。可能从代码量来看,写一道BFS或者DFS的篇幅比其他类型的题目要多。BFS,DFS既然思维固定,必然有其套路。套用模板方法,让我们的解题更加流畅。有如庖丁解牛,游刃有余。BFS模板BFS思路是先将邻居加进来,如果只是口述的话难免枯燥。下面将以图上的搜索(找start_node...

weixin_39784972的博客 1497

Python爬虫实战:如何抓取旅游论坛上的帖子、旅行攻略和评论内容

无论是知名的旅游网站,还是地方性的旅游讨论区,用户发布的旅行贴文、攻略和评论往往包含着大量的宝贵信息。本文将详细介绍如何使用Python编写一个爬虫,抓取旅游论坛上的帖子、旅行攻略和评论内容,涵盖从获取页面内容、解析数据到处理动态加载等各个方面的技术。从基本的请求和网页解析,到动态加载页面的处理,再到数据存储和反爬虫技巧,我们详细讲解了抓取旅游论坛数据的全过程。通过本文的介绍,你可以将所学的爬虫技术应用到其他类似的网站抓取任务中,为后续的数据分析、机器学习等任务提供丰富的数据源。在这种情况下,传统的。

2201_76125261的博客 1557

YOLOv8改进 | Conv篇:基于FasterBlock与C2f结构的二次创新,参数量下降70万【附保姆级代码】

通过引入FasterBlock二次创新C2f结构,我们成功地对YOLOv8模型进行了优化,显著降低了其参数量,并提升了推理速度,而精度保持不变甚至有所提升。该模型在多个实际应用场景中展现出了优异的性能,尤其是在嵌入式设备、移动端和自动驾驶等领域,具有广泛的应用潜力。未来的研究将进一步优化模型结构,探索更多的应用场景,为目标检测技术的发展做出贡献。

一键难忘的博客 3215

LeetCode 417 python dfs

解析: 深度优先搜索,从左到右,从上到下,若board[i][j] 为‘X’,战舰数目加一。则继续向下或向右(不继续向上或向左是因为左边的和上边的位置已经遍历过了,若是有战舰相邻,则该位置必不为‘X’),记录一个索引,board[i][j]为始,保持该位置符号不变,继续向下或向右搜索,若有相邻战舰,则相邻战舰位置符号变为‘.’,这样做救恩那个保证最后甲板上只有不相邻的战舰位置符号为’X’,其余位置为’.’,在遍历的过程中同时计数。 class Solution: def countBattlesh.

qq_42316533的博客 776

基于TIA博途的一阶滞后滤波+中位值滤波+堆栈平均值滤波算法SCL语言程序(封装FB库)

基于TIA博途的一阶滞后滤波+中位值滤波+堆栈平均值滤波算法SCL语言程序(封装FB库)

Robot_PLC_HMI_Automation 2181

【简单】872. 叶子相似的树

【】

... 235

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

leetcode 算法题872 (简单227) 叶子相似的树

leetcode 算法题872 (简单227) 叶子相似的树 题目介绍 请考虑一颗二叉树上所有的叶子, 这些叶子的值按从左到右的顺序排列形成一个 叶值序列 举个例子,如上图所示, 给定一颗叶值序列为 (6, 7, 4, 9, 8) 的树。 如果有两颗二叉树的叶值序列是相同, 那么我们就认为它们是 叶相似 的。 如果给定的两个头结点分别为 roo...

FYuu95100的博客 242

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【LeetCode】C++ :简单题 - 树 872. 叶子相似的树

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

weixin_44566432的博客 171

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

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

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,6,7,4,2,null,n

m0_51955470的博客 227

【LeetCode刷题(简单程度)】872. 叶子相似的树

请考虑一颗二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。 举个例子,如上图所示,给定一颗叶值序列为 (6, 7, 4, 9, 8) 的树。 如果有两颗二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。 如果给定的两个头结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。 提示: 给定的两颗树可能会有 1 到 200 个结点。 给定的两颗树上的值介于 0 到 200 之间。 来源:力扣(LeetCode) 链接:https:/

qq_33197518的博客 185

【leetcode】872. 叶子相似的树(leaf-similar-trees)(dfs)[简单]

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

Krone_的博客 259

leetcode872. 叶子相似的树(java)

输入: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]具体地,在深度优先搜索的过程中,我们总是先搜索当前节点的左子节点,再搜索当前节点的右子节点。举个例子,如上图所示,给定一棵叶值序列为 (6, 7, 4, 9, 8) 的树。输入:root1 = [1,2,3], root2 = [1,3,2]如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。

SP_1024的博客 579

叶子相似的树

叶子相似的树 题目 叶子相似的树(力扣:872) 请考虑一颗二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个叶值序列 。 如果有两颗二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。 如果给定的两个头结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。 代码实现 /** * 872. 叶子相似的树 * @param root1 * @param

卜大爷的博客 2万+

LeetCode-872 叶子相似的树

树搜索 LeetCode-872 叶子相似的树 题目链接:LeetCode-872 题目大意:比较两个二叉树的叶子是否完全相同 包括顺序 1,2,3和1,3,2也算不相同哦 解题思路:创建两个集合 存储两个二叉树的叶子 之后搜索树的叶子就行了 搜到叶子将权值存进集合 最后将两个集合的元素进行比较 代码块: /** * Definition for a binary tree node. * p...

鱼头的水题之路 203

leetcode872:叶子相似的树

本题只要是考察如何求取树的叶子节点,采用广度优先的思想,利用栈的方法去解决。

ch18328071580的博客 364

leetcode 872叶子相似的树

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

fang156239305的博客 308

LeetCode 872. 叶子相似的树

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

Michael是个半路程序员 901

872.力扣LeetCode_叶子相似的树

本文比较了三种判断二叉树是否叶相似的方法的方法:1)基于栈的非递归中序遍历,通过比较叶子节点序列判断;2)Morris遍历利用线索化节点的动态右孩子状态实现精准叶子判定;3)递归中序遍历实现。三种方法均通过收集叶子节点序列后比较序列一致性进行判断,其中栈方法空间复杂度O(n),Morris方法优化为O(1),递归方法简洁但存在栈递归调用风险。核心思路都是通过中序遍历提取叶子序列,再比较序列是否完全一致。

2401_82472941的博客 1054
上一篇: 【树-简单】101. 对称二叉树
下一篇: 【树-简单】530. 二叉搜索树的最小绝对差
菜菜2022
博客等级 码龄9年 67粉丝 1033原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值