当前位置: 首页 > news >正文

【LeetCode刷题指南】--单值二叉树,相同的树

🔥个人主页:@草莓熊Lotso

🎬作者简介:C++研发方向学习者

📖个人专栏: 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》

⭐️人生格言:生活是默默的坚持,毅力是永久的享受。 

前言:在之前的C语言刷题集中我们刷了很多IO类型的基础编程题,但是随着数据结构往后的学习以及企业面试的要求,我们还需要对接口型的题目进行练习,博主在这里准备了新的《LeetCode刷题指南》专栏给大家分享一些我自己在力扣上面写过的题目,提供一些我的解题思路。个人实力有限,欢迎大家补充和指正。


目录

一.单值二叉树

解题过程:

代码实现: 

二.相同的树

解题过程:

代码实现: 


一.单值二叉树

题目链接:965. 单值二叉树 - 力扣(LeetCode)

 题目描述:

题目描述: 

思路: 递归

解题过程:

1.如果root为空返回true

2.如果root非空我们就判断其左右孩子不为空时值是否跟根结点值相等,如果不相等就返回false

3.我们需要递归判断子树和右子树是否都为单值二叉树

具体过程如图所示:

复杂度: 

  • 时间复杂度: O(n)
  • 空间复杂度: O(n)

代码实现: 

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*/
bool isUnivalTree(struct TreeNode* root) {if(root==NULL){return true;}//root非空,root和左右孩子的值比较if(root->left&&root->left->val!=root->val){return false;}if(root->right&&root->right->val!=root->val){return false;}return isUnivalTree(root->left)&&isUnivalTree(root->right);
}

二.相同的树

题目链接:100. 相同的树 - 力扣(LeetCode)

题目描述: 

题目示例: 

思路: 递归

解题过程:

1.p和q都为空时返回true,只有一个为空时返回false

2.如果都不为空就比较两个结点的值,值不相等就返回false

3.递归判断左右子树是否都为相同的树

具体过程图示如下: 

复杂度: 

  • 时间复杂度: O(n)
  • 空间复杂度: O(n)

代码实现: 

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*/
bool isSameTree(struct TreeNode* p, struct TreeNode* q) {//p和q都为空if(p==NULL && q==NULL){return true;}//p和q只有一个为空,前面提前判断过全为空处理了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);
}

往期回顾:

【LeetCode刷题指南】--随机链表的复制

【LeetCode刷题指南】--有效的括号

【LeetCode刷题指南】--队列实现栈,栈实现队列

结语:本篇文章就到此结束了,《LetetCode刷题指南》中的题目比起之间的C语言刷题集中的题目,肯定会更加复杂一些。而且题目形式也不一样,大家需要注意一下。如果文章对你有帮助的话,欢迎评论,点赞,收藏加关注,感谢大家的支持。

http://www.lryc.cn/news/607553.html

相关文章:

  • RustFS:高性能文件存储与部署解决方案(MinIO替代方案)
  • session和cookie作用详解
  • Solana:解决Anchor Build编译程序报错 no method named `source_file` found for struct
  • 设计模式1:创建型模式
  • 后台管理系统权限管理:前端实现详解
  • PDFsam免费开源!PDF分割合并工具
  • unity学习——视觉小说开发(一)
  • AI应用UX设计:让技术更懂用户
  • Android Jetpack 系列(五)Room 本地数据库实战详解
  • 第一个大语言模型的微调
  • Transformer架构全解析:搭建AI的“神经网络大厦“
  • Spring之【循环引用】
  • 插件升级:Chat/Builder 合并,支持自定义 Agent、MCP、Rules
  • 小学阶段的学习机推荐:科大讯飞T30、Lumie 10学习机暑期16项AI功能升级
  • 代码随想录day52图论3
  • Effective C++ 条款15:在资源管理类中提供对原始资源的访问
  • ICML 2025 | 深度剖析时序 Transformer:为何有效,瓶颈何在?
  • qt中的手势
  • STM32学习记录--Day5
  • 操作系统-lecture4(进程的调度)
  • win10 VC++6.0 应用程序无法正常运行 0xc0000142,应用程序无法正常启动,报错“0xc0000142”,解决办法
  • 深度解读 CSGHub:开源协议、核心功能与产品定位
  • Springboot 配置 doris 连接
  • Spring Boot 异步执行方式全解析:@Async、CompletableFuture 与 TaskExecutor 对比
  • JavaWeb笔记2-JavaScriptVueAjax
  • 备案主体更换期间网站可以访问吗
  • opencv-python的GPU调用
  • 树莓派GPIO介绍 + LED控制
  • 智能Agent场景实战指南 Day 28:Agent成本控制与商业模式
  • xcode swift项目运行、连接真机运行报错,引入文件夹失败