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

大家好,我是小卡皮巴拉

文章目录

目录

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

题目描述

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

兄弟们共勉 !!!

码字不易,求个三连

抱拳了兄弟们!

相关推荐
2013092416277 小时前
1968年 Hart, Nilsson, Raphael 《最小成本路径启发式确定的形式基础》A* 算法深度研究报告
人工智能·算法
如何原谅奋力过但无声7 小时前
【力扣-Python-滑动窗口经典题】567.字符串的排列 | 424.替换后的最长重复字符 | 76.最小覆盖子串
算法·leetcode
玄冥剑尊8 小时前
贪心算法进阶
算法·贪心算法
玄冥剑尊8 小时前
贪心算法深化 I
算法·贪心算法
52Hz1188 小时前
力扣73.矩阵置零、54.螺旋矩阵、48.旋转图像
python·算法·leetcode·矩阵
BHXDML8 小时前
第一章:线性回归& 逻辑回归
算法·逻辑回归·线性回归
iAkuya9 小时前
(leetcode)力扣100 二叉搜索树种第K小的元素(中序遍历||记录子树的节点数)
算法·leetcode·职场和发展
Root_Hacker9 小时前
include文件包含个人笔记及c底层调试
android·linux·服务器·c语言·笔记·安全·php
杨间10 小时前
《排序算法全解析:从基础到优化,一文吃透八大排序!》
c语言·数据结构·排序算法
Remember_99310 小时前
【LeetCode精选算法】滑动窗口专题二
java·开发语言·数据结构·算法·leetcode