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

大家好,我是小卡皮巴拉

文章目录

目录

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

题目描述

[示例 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);
}

兄弟们共勉 !!!

码字不易,求个三连

抱拳了兄弟们!

相关推荐
数研小生8 小时前
构建命令行单词记忆工具:JSON 词库与艾宾浩斯复习算法的完美结合
算法·json
芒克芒克8 小时前
LeetCode 题解:除自身以外数组的乘积
算法·leetcode
Python 老手9 小时前
Python while 循环 极简核心讲解
java·python·算法
@Aurora.9 小时前
优选算法【专题九:哈希表】
算法·哈希算法·散列表
爱看科技9 小时前
微美全息(NASDAQ:WIMI)研究拜占庭容错联邦学习算法,数据安全与隐私保护的双重保障
算法
彷徨而立9 小时前
【C/C++】什么是 运行时库?运行时库 /MT 和 /MD 的区别?
c语言·c++
qq_417129259 小时前
C++中的桥接模式变体
开发语言·c++·算法
Hello World . .9 小时前
数据结构:队列
c语言·开发语言·数据结构·vim
YuTaoShao10 小时前
【LeetCode 每日一题】3010. 将数组分成最小总代价的子数组 I——(解法二)排序
算法·leetcode·排序算法
Abona10 小时前
C语言嵌入式全栈Demo
linux·c语言·面试