leetcode二叉树

下面的两个题呢是比较类似的所以放在一起讲,更好的理解起来。

https://leetcode.cn/problems/same-tree/description/

这个题就是比较两颗树是不是一样的,这个其实看起来就只要比较当前节点,我们分析成子问题就是判断两颗树当前节点是不是一致的,比如p和q的val还有就是为空的时候我们,这样我们的代码其实就写好了。

c 复制代码
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);
}

所以这个题目时比较简单的,分析成子问题只要看当前的子节点就行了,下面马上跟上一个类似的就是
https://leetcode.cn/problems/univalued-binary-tree/description/

这个题可以分成的子问题就是我们来判断父亲节点和孩子节点是不是相同的子问题,但是还是需要考虑的一个问题就是空这个问题,因为如果是空的话就需要返回的是true,空了还玩个鸡毛啊哈哈哈哈,比如我们一个节点的时候左右孩子都是空,那我们这要也是最后要输出true的,有了这样的分析,我们可以把代码写成这样。

c 复制代码
bool isUnivalTree(struct TreeNode* root) {
    if(root == NULL)
    {
        return true;
    }
    
    if(root->left != NULL && root->left->val != root->val)
    {
        return false;
    }
    if(root->right != NULL && root->right->val != root->val)
    {
        return false;
    }
    return isUnivalTree(root->left) && isUnivalTree(root->right);
}

把三道题分了两篇文章哈哈哈哈,主要是为了那个流量扶持,但是我保证我没有水文章,最近又期末考试了,要忙起来了。

相关推荐
空堂与归18 分钟前
用户分群找不到规律?用K-Means聚类算法自动发现数据模式
算法·机器学习·kmeans·聚类
动词ing1 小时前
【C语言】自定义函数+指针入门
c语言·开发语言·算法
重生之后端学习1 小时前
283. 移动零[简单]✅
开发语言·数据结构·算法·leetcode·职场和发展
一只小小的芙厨1 小时前
基础数论总结
笔记·学习·算法
夜不会漫长3 小时前
C++入门(1)
开发语言·c++·算法
wen_zhufeng4 小时前
IndexTTS 2.5 技术报告
人工智能·算法·机器学习
ITmaster07314 小时前
天天 AI Coding 的你,如果出去面试,你的竞争力是什么?
人工智能·面试·职场和发展
大熊背4 小时前
树莓派相机自动白平衡详解(四)
算法·树莓派·白平衡·isppipeline
一米阳光86614 小时前
软考(中级)软件设计师核心笔记(9)算法——背包问题
笔记·算法·职场发展·软考·软件设计师·中级职称
晚风醉蝶5 小时前
1-11-奇偶排序-OddEvenSort
java·数据结构·算法