【力扣刷题实战】相同的树

大家好,我是小卡皮巴拉

文章目录

目录

[力扣题目: 相同的树](#力扣题目: 相同的树)

题目描述

[示例 1:](#示例 1:)

[示例 2:](#示例 2:)

[示例 3:](#示例 3:)

解题思路

题目理解

算法选择

具体思路

解题要点

完整代码(C语言)

[兄弟们共勉 !!!](#兄弟们共勉 !!!)


每篇前言

博客主页:小卡皮巴拉

咱的口号:🌹小比特,大梦想🌹

作者请求:由于博主水平有限,难免会有错误和不准之处,我也非常渴望知道这些错误,恳请大佬们批评斧正。

力扣题目: 相同的树

原题链接: 相同的树

题目描述

给你两棵二叉树的根节点 pq ,编写一个函数来检验这两棵树是否相同。

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

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

解题思路

题目理解

判断两棵二叉树是否完全相同,即结构相同且对应节点的值也相同。

算法选择

使用递归算法,因为递归能够自然地处理树结构的遍历。

具体思路

  1. 空树判断

    • 如果两棵树的根节点pq都为空,则它们相同,返回true

    • 如果其中一个为空,另一个不为空,则它们不相同,返回false

  2. 节点值比较

    • 如果两棵树的根节点都不为空,则比较它们的值。

    • 如果值不相同,则它们不相同,返回false

  3. 递归比较子树

    • 如果两棵树的根节点值相同,则递归地比较它们的左子树和右子树。

    • 使用isSameTree函数分别比较左子树和右子树,只有当两者都返回true时,才认为整棵树相同。

解题要点

  • 递归地处理树结构。

  • 在每个递归步骤中,首先处理空树和节点值比较的基础情况。

  • 然后递归地调用自身来比较子树。

完整代码(C语言)

cpp 复制代码
 typedef struct TreeNode TreeNode;
bool isSameTree(struct TreeNode* p, struct TreeNode* q) {
    if(p == NULL && q == NULL)
    {
        return true;
    }
    if(p == NULL || q == NULL)
    {
        return false;
    }
    //都不为空
    if(p->val != q->val)
    {
        return false;
    }
    return isSameTree(p->left,q->left) && isSameTree(p->right,q->right);
}

兄弟们共勉 !!!

码字不易,求个三连

抱拳了兄弟们!

相关推荐
Liangwei Lin21 小时前
LeetCode 74. 搜索二维矩阵
算法·leetcode·矩阵
phltxy21 小时前
Redis Hash 数据类型:详解命令与实战场景
redis·算法·哈希算法
放羊郎1 天前
基于ORB-SLAM2算法的优化工作
人工智能·算法·计算机视觉
mask哥1 天前
力扣算法java实现汇总整理(上)
java·算法·leetcode
袁雅倩19971 天前
当吸尘器、筋膜枪都用上Type-C,供电方案该怎么选?浅谈PD取电芯片ECP5702的应用
c语言·开发语言·支持向量机·动态规划·推荐算法·最小二乘法·图搜索算法
如果'\'真能转义说1 天前
OOXML 文档格式剖析:哈希、ZIP结构与识别
xml·算法·c#·哈希算法
梦梦代码精1 天前
BuildingAI 上部署自定义工作流智能体:5 个实用技巧
大数据·人工智能·算法·开源软件
Zephyr_01 天前
Leedcode算法题
java·算法
流年如夢1 天前
栈和列队(LeetCode)
数据结构·算法·leetcode·链表·职场和发展