(刷题笔记)Leetcode 100.相同的树

字节工程师总结的LeetCode刷题笔记提供下载,太优秀了 阅读详情

题目

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

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

示例 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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/same-tree

解题思路

这一题考察的还是遍历,只需要在遍历过程中判断结点是否匹配(同时为NULL或同时不为NULL),对应结点的值是否相同

代码(C++)

非递归

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:

    bool isSameTree(TreeNode* p, TreeNode* q) {

        if(p==NULL&&q!=NULL) return false;
        if(q==NULL&&p!=NULL) return false;

        stack<TreeNode*> st1;
        stack<TreeNode*> st2;

        while(!st1.empty()||p){

            while(p){
                if(q){
                    if(p->val==q->val){
                        st1.push(p);
                        st2.push(q);
                        p=p->left;
                        q=q->left;
                    }
                    else{
                        return false;//对应结点值不同
                    }
                }
                else{
                    return false;//结点不匹配
                }
            }

            if(q!=NULL){
                return false;//结点不匹配
            }

            p=st1.top();
            q=st2.top();

            st1.pop();
            st2.pop();

            p=p->right;
            q=q->right;

        } 
       
        return true;
       
    }
};

递归

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:

    bool isSameTree(TreeNode* p, TreeNode* q) {
    
       
       if(p==NULL&&q==NULL)  return true;
       if(p==NULL&&q!=NULL)  return false;
       if(q==NULL&&p!=NULL)  return false;
       if(q->val!=p->val)    return false;

       return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);
    }
};
Leetcode-How-What 力扣Leetcode刷题指南 Leetcode-How-What 力扣Leetcode刷题指南 About the way how to use Leetcode wisely for preparing the interview and the solutions to some Leetcode problems’. 怎样为准备面试机智聪明的刷题(高效刷题)以及一些题目的题解。 同 github 链接: https:/... 阅读详情

相关推荐

力扣热题100刷题笔记[python]

力扣100刷题题解

仰望星空 2166

100. 相同的树

给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入:p = [1,2,3], q = [1,2,3] 输出:true 示例 2: 输入:p = [1,2], q = [1,null,2] 输出:false 示例 3: 输入:p = [1,2,1], q = [1,1,2] 输出:false 在这里插入代码片 /** * Definition for a binary tree node. *

qq_45638271的博客 312

LeetCode Hot100 刷题笔记(4)—— 二叉树、图论

一、二叉树:二叉树的中序遍历,二叉树的最大深度,翻转二叉树,对称二叉树,二叉树的直径,二叉树的层序遍历,将有序数组转换为二叉搜索树,验证二叉搜索树,二叉搜索树中第 K 小的元素,二叉树的右视图,二叉树展开为链表,从前序与中序遍历序列构造二叉树,路径总和 III,二叉树的最近公共祖先,二叉树中的最大路径和。 二、图论:岛屿数量,腐烂的橘子,课程表,实现 Trie (前缀树)。

qq_51175703的博客 1592

【LeetCode刷题(数据结构)】:检查两颗树是否相同

给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的输入:p = [1,2,3], q = [1,2,3]输出:true输入:p = [1,2], q = [1,null,2]输出:false输入:p = [1,2,1], q = [1,1,2]输出:false前言两个二叉树相同,当且仅当两个二叉树的结构完全相同,且所有对应节点的值相同。因此,可以通过搜索的方式判断两个二叉树是否相同。

优快云官方认证C/C++研发领域优质创作者 优快云官方2023年成都赛道Top3 第16届蓝桥杯C/C++软件赛四川赛区二等奖 带你玩转C/C++ 数据结构与算法 Linux系统编程/Linux网络编程 MySQL数据库 软件测试开发 691

1024,给大家谈谈如何搞透刷题 玩转力扣!

前言 大家好,我是bigsai,好久不见!今天1024,祝大家程序员节快乐,写代码永没bug!今天就给各位小伙伴分享我自己刷题力扣的一些小方法,不一定很有用但是可以参考,祝你更高效的变强! 最近在一些群聊、私聊中遇到很多的一个问题就是:刷题,大家也都重视到算法刷题对冲击大厂的重要性,越来越多的人开始卷起来了! 但有的人是这样卷起来的,卷的自己都懵了。 今天,我就给偏初学者的各种问题谈谈个人刷力扣这方面的观点。 刷哪些题? 大家刷力扣,目标肯定就是为了冲击大厂的面试笔试,小部分就是为了坚持刷题保持感觉提升

bigsai 4293

VTK vtkLookupTable vtkScalarBarActor 颜色条

有时需要给数据做一个 vtkScalarBarActor, 我们把显示的数据的一个 坐标系 来显示 颜色条1.以 Z 显示颜色 效果如下。

q610098308的专栏 4039

【数据结构】C语言算法练习题——判断题目中给定的俩个二叉树是否相同

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

Sky*殇的博客 838

【UOJ170】Picks loves segment tree VIII

【题目链接】 点击打开链接 【前置阅读】 【BZOJ4695】最假女选手 【BZOJ3064】【TYVJ1518】CPU监控【UOJ169】【UR #11】元旦老人与数列 【思路要点】 前置阅读中的前两题中,我们分别对线段树的区间取最大/最小值和线段树的历史最大/最小值进行了研究。本题中,两类问题同时出现,因此我们

cz_xuyixuan的博客 1250

Github最新霸榜,这份LeetCode刷题指南手册到底强在哪里?

无论是校招还是社招,还是一线大厂的面试,或多或少都会问到关于数据结构与算法的问题。想要通关面试,拿到心仪的offer ,千万别让数据结构和算法拖了后腿。

the shy 1169

allegro 约束管理Constraint Manager(一)

介绍Cadence allegro 约束管理器CM的使用方法。

weixin_38975819的博客 8716

浅谈武术擂台格斗机器人大赛

武术擂台机器人赛是工科类专业的一个跨学科的竞赛项目,它涵盖了机械结构、硬件电路和计算机程序等技术领域。笔者在校期间有幸参加过四次这样的比赛,有成功也有失败,对此深有感悟。本文仅为个人观点,有说得不对的地方,望积极指出,希望能帮助到有需要的人。

weixin_43811044的博客 1万+

力扣刷题笔记 100. 相同的树 C#

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

cjc52294的博客 436

基于STM32设计的智能家居控制系统(华为云)_363

本项目设计并实现了一种基于STM32的智能家居控制系统,融合了语音识别、远程控制、环境监测与安全报警等功能。系统以STM32F103C8T6单片机为核心控制器,集成ESP8266 Wi-Fi模块实现与华为云IOT物联网平台的数据交互,采用MQTT协议进行通信。用户可通过语音识别模块控制风扇、空调、窗帘、卧室灯、客厅灯和电视等家电的开关操作,同时也可通过Android手机APP或Windows电脑上位机进行远程控制。系统还具备温湿度、光照强度、烟雾浓度和火焰检测功能,当检测到异常情况时,自动触发蜂鸣器报警并向

882

Leetcode刷题笔记 100. 相同的树

100. 相同的树 时间:2020年8月7日 知识点:二叉树 题目链接:https://leetcode-cn.com/problems/same-tree/ 题目 给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例1 输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3] 输出: true

cjl的博客 242

高频网络协议与编程IO相关面试基本问题和知识点整理

网络IO相关基本高频面试基本问题和知识点整合

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 173万+

CST与MATLAB连接设置

打开MATLAB,点击"Set Path"按钮,然后点击"Add Folder"。在CST中,点击"Options"菜单,然后选择"Advanced"选项。在弹出的对话框中,点击"COMSOL"选项卡,并确保"Enable COMSOL"复选框被选中。通过上述步骤和示例代码,你可以开始使用MATLAB与CST进行集成,并根据你的具体需求进行进一步的开发和应用。通过这个简单的示例,你可以开始在MATLAB中与CST进行交互,并根据你的需求进行更复杂的操作,如参数化仿真、优化和数据处理等。

TechPulseZ的博客 1966

LeetCode刷题笔记 100. 相同的树

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

g534441921的博客 200

如何提高电路的抗干扰能力

本内容详细介绍了电源传导干扰处理,包括滤波、Feedthrough电容器、磁环、磁珠、屏蔽的使用与选型,EMC电磁兼容测试项目简介与要求,单片机与电源抗干扰处理等。

让你爱上电路设计 8600

LeetCode刷题笔记第100题:相同的树

LeetCode刷题笔记第100题:相同的树 想法: 想要判断两棵树是否相同,则需要判断对应位置节点是否相同,因此需要通过递归判断树中所有的节点。在判断对应节点时,需要判断两棵树中对应位置节点是否存在并相同,一旦有不同则返回False,若相同则递归判断余下节点,直至最后的位置节点是否相同,当两棵树中节点均遍历完成,并且没有不相同的多余节点时判断结束,此时两棵树相同。 # Definition for a binary tree node. # class TreeNode: # def __init

qq_29787929的博客 157

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

LeetCode刷题笔记(100,相同的树,Easy)

/** * 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) { .

qq_40107365的博客 138

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Leetcode刷题笔记题解(C++):100. 相同的树

思路:挨个去判断是否相等 1.如果当前的节点都为空,则说明没有子节点了,返回true 2.如果当前的节点只有一个为空,则返回false 3.如果当前节点的值不相等,则返回false 4.如果相等且还有子节点继续向下判断 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeN..

Demo.demo的博客 241

数学建模模型总结

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

力扣算法 Java 刷题笔记【二叉树篇】hot100(十三) 二叉树的最大深度 对称二叉树 相同的树 3

文章目录 1. 二叉树的最大深度(简单) 2. 对称二叉树(简单) 3. 相同的树(简单)

心海非海_のBlog 382

力扣(LeetCode)怎么刷题,以排序算法为例

掌握 LeetCode 刷题方法再开始刷题,属于磨刀不误砍柴工。掌握正确方法是非常重要的。 如果你在刷题的时候发现怎么也写不出来,别担心,这是正常的。如果你还发现,之前明明刷过的题,过段时间再做的时候,自己还是不会。别担心,这也是正常的。 在这我分享一下我的刷题经验,希望对你有帮助。如果你时间比较紧迫,为了找工作而刷题,我建议你先刷热门推荐,一共两百多道题。 在 LeetCode中文版 页面的右侧。先刷热题 HOT 100,再刷精选 TOP 面试题,之后刷其他的题。 如果你时间比较充裕,那我建议

Allenzyg的博客 1万+

力扣刷题之准备工作

在刷算法题的过程中进行总结是非常重要的,它可以帮助你梳理思路、加深理解、记录学习成果,并提升解题能力。每天回顾:在每天结束时,对当天解决的题目进行回顾。检查解决方案的正确性,并思考是否有更优化的方法。记录下遇到的难点和解决方法,以及学到的新知识点和技巧。整理这些笔记并归档到适当的分类中,以便今后参考。每周汇总:在每周末或开始新一周时进行总结。复习过去一周解决的题目,分析解题过程中使用的算法和数据结构。总结你学到的关键知识点、解题技巧和模式,并将其整理到博客中。

weixin_47040031的博客 9754

Leetcode刷题修炼手册

我的机器学习教程「美团」算法工程师带你入门机器学习 已经开始更新了,欢迎大家订阅~ 任何关于算法、编程、AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入”学习小组“,沙雕博主在线答疑~此外,公众号内还有更多AI、算法、编程和大数据知识分享,以及免费的SSR节点和学习资料。其他平台(知乎/B站)也是同名「图灵的猫」,不要迷路哦~ “跟着...

Machine Learning with Tutors 5万+

LeetCode第100题_相同的树

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

qq_40263592的博客 1725
上一篇: (刷题笔记)Leetcode 538.把二叉搜索树转换为累加树
下一篇: (刷题笔记)Leetcode 530.二叉搜索树的最小绝对差
Lucky&Happy
博客等级 码龄10年 1粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值