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

大家好,我是小卡皮巴拉

文章目录

目录

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

题目描述

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

兄弟们共勉 !!!

码字不易,求个三连

抱拳了兄弟们!

相关推荐
一条大祥脚6 分钟前
ABC460贪心|多源BFS|数论|计数|线段树|树的直径
算法·宽度优先
社交怪人6 分钟前
【判断整除】信息学奥赛一本通C语言解法(题号1046)
c语言
tianyuanwo15 分钟前
C语言编译完全指南:从工具链到跨架构静态与动态编译
c语言·动态编译·静态编译
小欣加油16 分钟前
leetcode121买卖股票的最佳时机
数据结构·c++·算法·leetcode·职场和发展
韭菜钟20 分钟前
将vscode的数据从C盘迁移至D盘
c语言·ide·vscode
2601_9618451539 分钟前
2026四级作文预测题|英语四级写作押题+提纲PDF
java·c语言·数据库·c++·python·pdf·php
暖阳华笺1 小时前
【高频考点】K-Means聚类算法
c++·算法·机器学习·kmeans·聚类
下午写HelloWorld1 小时前
后量子密码算法:协同签名研究综述
算法·密码学·后量子·协同签名
小蒋学算法1 小时前
算法-计算右侧小于当前元素的个数-分治&归并思想
java·数据结构·算法
lqqjuly1 小时前
FlashAttention 深度解析
人工智能·深度学习·算法