• 力扣第100题 相同的数 c++ 二叉 简单易懂+注释


    题目

    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
    

    提示:

    • 两棵树上的节点数目都在范围 [0, 100] 内
    • -104 <= Node.val <= 104

    思路和解题方法

    1. bool isSameTree(TreeNode* p, TreeNode* q):这是一个名为isSameTree的函数,它接受两个参数pq,分别表示要比较的两个二叉树的根节点。返回值类型为bool,表示两个二叉树是否相同。

    2. if (p == nullptr && q == nullptr):首先判断两个节点pq是否都为空。如果是,则表示这两个子树是相同的,没有节点需要比较,直接返回true

    3. else if (p == nullptr || q == nullptr):如果只有一个节点为空,而另一个节点不为空,这说明这两个子树不相同,因为它们的节点数量不同。在此情况下,直接返回false

    4. else if (p->val != q->val):如果两个节点都不为空,但它们的值不相同,说明这两个子树不相同,直接返回false

    5. else:当两个节点都不为空且它们的值相等时,我们需要进一步比较它们的左右子树。递归调用isSameTree函数,传入左子树的左孩子和右子树的右孩子,以及左子树的右孩子和右子树的左孩子。只有当这两个递归调用都返回true时,才说明整个树是相同的,返回true

    复杂度

            时间复杂度:

                    O(n。c)

    时间复杂度是O(n),其中n表示两个二叉树中节点数的最大值。这个复杂度是因为在最坏情况下,需要访问两个二叉树的所有节点,因此时间复杂度是线性的。

            空间复杂度

                    O(n)

    空间复杂度也是O(n),由于递归调用,每个函数调用都会将一些数据压入堆栈中,因此需要O(n)的空间来存储这些信息(其中n表示树的高度)。在最坏情况下,两个树的高度相同,因此空间复杂度与节点数成正比。

    c++ 代码

    1. class Solution {
    2. public:
    3. // 判断两个二叉树是否相同的函数
    4. bool isSameTree(TreeNode* p, TreeNode* q) {
    5. // 如果两个节点都是空,则表示这两个子树是相同的,直接返回true
    6. if (p == nullptr && q == nullptr) {
    7. return true;
    8. }
    9. // 如果只有一个节点为空,则表示这两个子树不相同,直接返回false
    10. else if (p == nullptr || q == nullptr) {
    11. return false;
    12. }
    13. // 如果两个节点的值不相同,则表示这两个子树不相同,直接返回false
    14. else if (p->val != q->val) {
    15. return false;
    16. }
    17. // 递归比较左右子树的节点,只有左右子树的对应节点都相同时,
    18. // 才表示这两个子树相同,因此需要对两个子树递归调用此函数
    19. else {
    20. return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
    21. }
    22. }
    23. };

    觉得有用的话可以点点赞,支持一下。

    如果愿意的话关注一下。会对你有更多的帮助。

    每天都会不定时更新哦  >人<  。

  • 相关阅读:
    Codeforces Round #802 (Div. 2)
    接口测试经验合集
    无处不在的智慧:嵌入式技术引领智能生活
    #430 品质生活:擦地机器人掉坑记
    排序(二分法查找、冒泡排序、选择排序、插入排序以及快速排序)
    2023江西财经大学计算机考研信息汇总
    平行哲学与智能技术:平行产业与智慧社会的对偶方程与测试基础
    Stream流详解
    Java替换 html 中隐藏的空格字符
    【MAC工具】一个关于最好用虚拟机Parallels Desktop的悲伤的故事
  • 原文地址:https://blog.csdn.net/jgk666666/article/details/133622562