Leetcode 100. 相同的树

【简单】力扣算法题解析LeetCode100:相同的树 本题要求判断两棵二叉树是否相同(结构相同且节点值相同)。通过递归深度优先搜索(DFS)实现:若两节点均为空则返回true,若一空一非空或节点值不等则返回false,否则递归检查左右子树。时间复杂度O(n),空间复杂度O(h)(树高)。Java代码简洁高效,利用短路优化提升性能。示例与图解清晰展示不同情况,适合初学者理解二叉树递归遍历。 关键词:二叉树、递归、DFS、结构比较、节点值 阅读详情

题目

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

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

在这里插入图片描述在这里插入图片描述在这里插入图片描述

解答

解法一:递归

递归很好理解。

先比较当前结点,如果当前结点相等,再比较左右子树是否相等。

代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public boolean isSameTree(TreeNode p, TreeNode q) {
        if(p == null) return q == null;
        if(q == null) return p == null;
        return p.val == q.val && isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
    }
}
结果

在这里插入图片描述

解法二:队列 + 迭代

使用队列,将两棵树相同位置的结点放在一个 Couple 中。

如果 Couple 比对不相等,直接返回 false。

否则如果当前结点不为 null,就把新的左右结点加入队列。

代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    class Couple {
        TreeNode n1;
        TreeNode n2;
        
        Couple(TreeNode n1, TreeNode n2) {
            this.n1 = n1;
            this.n2 = n2;
        }
    }
    
    public boolean isSameTree(TreeNode p, TreeNode q) {
        LinkedList<Couple> queue = new LinkedList<>();
        queue.offer(new Couple(p, q));
        while(!queue.isEmpty()) {
            Couple top = queue.poll();
            TreeNode n1 = top.n1;
            TreeNode n2 = top.n2;
            if(!equals(n1, n2)) return false;
            
            if(n1 != null && n2 != null) {
                queue.offer(new Couple(n1.left, n2.left));
                queue.offer(new Couple(n1.right, n2.right));
            }
        }
        
        return true;
    }
    
    public boolean equals(TreeNode p, TreeNode q) {
        if(p == null) return q == null;
        if(q == null) return p == null;
        return p.val == q.val;
    }
}
结果

在这里插入图片描述

python【力扣LeetCode算法题库】100-相同的树 相同的树 给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入: 1 1 / \ / 2 3 2 3 [1,2,3], [1,2,3] 输出: true 示例 2: 输入: 1 1 / 2 ... 阅读详情

相关推荐

CODESYS EtherCAT通讯断了怎么办?手把手教你用ST语言写状态监测程序(附完整代码)

本文详细解析了CODESYS平台下EtherCAT通讯中断的故障排查与恢复方法,通过ST语言编写状态监测程序实现链路监测、故障隔离和伺服恢复。文章包含完整代码示例,帮助工程师快速诊断EtherCAT网络问题,提升工业自动化设备的运行稳定性。

weixin_30919571的博客 209

【算法两道】相同的树 && 翻转二叉树

100. 相同的树 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 /** * @param {TreeNode} p * @param {TreeNode} q * @return {boolean} */ var isSameTree = function(p, q) { function helpFun(root1,root2) { if (root1 === null &a

金金的博客 294

STM32 HAL库ADC+DMA配置详解:从CubeMX到实战调试

在嵌入式系统开发中,模数转换器(ADC)是实现传感器数据采集、信号处理等功能的基石。其工作原理是将连续的模拟信号转换为离散的数字量,为微控制器(MCU)提供可处理的数字信息。为了提升系统效率,直接存储器访问(DMA)技术被引入,它作为独立于CPU的数据搬运工,能在不占用CPU资源的情况下,自动完成外设与内存间的数据传输,从而解放CPU以执行更复杂的控制算法或通信任务。这种ADC与DMA的协同工作模式,对于实现高效、实时的数据流处理具有重要价值,广泛应用于电机控制、环境监测、音频处理等场景。本文聚焦于STM3

weixin_30698297的博客 407

LeetCode-100. 相同的树(java)

金三银四,又到了刷题月。有时间的话,希望大家还是尽量刷起来咯。帮助往往不是直接体现出来的,但会让你对很多东西的底层实现了解的更深刻。

**My Coding Family** 663

【OpenClaw从入门到精通】第17篇:OpenClaw巨头布局实战:阿里CoPaw/腾讯云/百度/火山引擎深度拆解(2026实操版)

2026年OpenClaw以22.8万星标登顶GitHub,引发阿里、腾讯、百度、字节等互联网巨头入局角逐。本文基于公开技术文档与实测经验,深度解析四大巨头的OpenClaw布局战略:阿里云CoPaw的全栈托管、腾讯云的流量入口绑定、百度智能云的搜索生态内嵌、火山引擎的极致智力供给。从核心原理、算法构建、实操流程三个维度,提供可直接落地的接入方案,包含完整代码示例与执行结果验证。通过流程图可视化核心架构,搭配避坑指南与选型矩阵,帮助新手快速上手、进阶读者实现多厂商协同部署。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1679

【RT-DETR涨点改进】小目标检测、特征融合改进篇 | TGRS 2024 | RT-DETR引入CSFM上下文选择融合模块,适合多模态检测、红外小目标检测、小目标检测、遥感目标检测等任务有效涨点

本文提出了一种改进RT-DETR目标检测模型的方法,通过引入上下文选择融合模块(CSFM)显著提升复杂背景下小目标和低对比度目标的检测精度。CSFM模块采用多尺度特征融合和动态特征选择机制,有效增强模型的全局上下文感知能力,同时保留细节特征。该模块通过通道减少机制和空间信息调节,实现从粗到细的特征聚合,减少误报并提高轮廓检测精度。实验表明,改进后的RT-DETR模型在多个基准测试中表现优异,计算效率与检测精度均优于现有方法。文章还详细介绍了模块配置和yaml文件修改方法,为模型部署提供指导。

Ai缝合怪、助力小伙伴高效发论文 1723

LeetCode第100题—相同的树

LeetCode、java、数据结构

Green_756的博客 1589

【AI智能体】全场景AI智能体工作台WorkBuddy实战操作详解

全场景AI智能体工作台WorkBuddy实战操作详解

congge 5487

java比两棵树是否相等_判断两个树是否相同&&判断一棵树是否是一棵树的子树

判断两棵树是否相同方法:对两棵树同时做相同的递归判断其值或者是结构是否相同。以下代码用的是前序遍历。递归方法(毕竟递归好理解而且代码少得可怜)。比较啰嗦的是指针为空的情况,只要把这些情况单独列出来就可了。javapublic boolean isSame(TreeNode s, TreeNode t){if(s==null&&t==null) return true;if(s==n...

weixin_35724794的博客 901

Open3D 可视化(1)——简单可视化【2026最新版】

简单可视化,博客长期更新,本文最新更新时间为:2026年5月10日。

点云侠的博客 5684

YOLO26优化:AAAI2026 | 融合PartialNet Block的C3k2-YOLO高效目标检测网络 | 轻量化涨点设计

PartialNet Block 结合YOLO26的C3k2模块,进行二次创新。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 589

LeetCode 之相同的树

问题描述: 给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3] 输出: true 示例 2: 输入: ...

qq_27817327的博客 225

GameFramework 框架详解之 Network网络模块 工具链

GameFramework(下面简称GF)Demo中,已经给我们提供了Network模块使用的protobuf使用的动态链接库protobuf-net.dll,但是GF并没有给我们提供protobuf相关的工具链,比如:1.proto文件自动导出对应c#的Packet类和PacketHandler类2.导出Packet类继承IReference以便使用引用池。3.自动生成Packet类和PacketHandler的Id,且保持和服务器Id一一对应。

TxNet 2901

100. 相同的树【 力扣(LeetCode) 】

给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。【 m,n 为两棵树的结点数】【 h 为两棵树的树高】

yyh520025的博客 1257

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

LeetCode 力扣 100. 相同的树

题目描述(简单难度) 判断两个二叉树是否相同。 解法一 这道题就很简单了,只要把两个树同时遍历一下,遍历过程中判断数值是否相等或者同时为 null 即可。而遍历的方法,当然可以选择 DFS 里的先序遍历,中序遍历,后序遍历,或者 BFS。 当然实现的话,可以用递归,用栈,或者中序遍历提到的 Morris。也可以参照 98 题 、 94 题 ,对二叉树的遍历讨论了很多。 这里的话,由于最近几题对...

wind_liang的博客 986

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

100. 相同的树 - 力扣(LeetCode)

前序、中序、后序,三个位置的代码执行时机分别是,未遍历过该节点的子树、仅遍历过该节点的左子树、全遍历过该节点的左右子树。可以看出后序位置是最强大的,但这题用不到后序,前序即可解决问题,只需要看两个树的当前节点是否一致就可以了,用外部变量来记录。属于遍历一遍能得到答案的题,但用递归遍历,需要理解递归思想。

xxm919的博客 183

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

LeetCode第100题_相同的树

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

qq_40263592的博客 1720

Leetcode 100 相同的树 C++,Java,Python

Leetcode100 相同的树 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/same-tree/ 博主Github:https://github.com/GDUT-Rp/LeetCode 题目: 给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入: ...

Rp的博客 368

Leetcode[树] 100. 相同的树

Leetcode[树] 100. 相同的树审题代码实现反思 审题 给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3] 输出: true 示例 2: 输入: 1 1 /

weixin_45415929的博客 244

力扣[LeetCode].100. 相同的树

给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3] 输出: true 示例 2: 输入: 1 1 / \ 2 2

C/C++/Linux/MySQL 464

LeetCode 100. 相同的树

题目链接 LeetCode 100. 相同的树 题目描述 给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 解题思路 这道题很简单,感觉LeetCode官方已经帮你把大部分的工作做好了,只要自己写个递归遍历一下就好了。 程序代码 c++ /** * Definition for a binary tree node. * st...

tangzhide123yy的博客 185

Leetcode100. 相同的树

Leetcode100. 相同的树 题目: 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入:     1           1              / \       &...

会流泪de鱼的博客 122

Leetcode 100. 相同的树 C++

Leetcode 100. 相同的树 题目 给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 测试样例 示例 1: 输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3] 输出: true 示例 2: 输入: 1 1 / \

weixin_43750513的博客 169

leetcode 100 ----- 相同的树

leetcode 100 ----- 相同的树 题目描述 给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 判定两个树相同 ==> 比较根节点是否相同 + 比较左子树是否相同 + 比较右子树是否相同 1. 如果两棵树都是空树,直接返回 ture 2. 如果两棵树一个为空,一个不为空,直接返回 false 3...

lsy18392609095的博客 151

力扣第100题 相同的树

记录一下刷题历程 力扣第100题 相同的树。

buaichifanqie的博客 406

力扣100. 相同的树(递归、迭代)

力扣100. 相同的树(递归) https://leetcode-cn.com/problems/same-tree/ 给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例1: 输入: 1 1 / \ / \ 2 3 2 3...

小麦China的博客 422
上一篇: Leetcode 99. 恢复二叉搜索树
下一篇: Leetcode 101. 对称二叉树
一纸浮萍
博客等级 码龄9年 11粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值