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

【代码随想录day 14】 力扣 104.二叉树的最大深度

视频讲解:https://www.bilibili.com/video/BV1Gd4y1V75u/?vd_source=a935eaede74a204ec74fd041b917810c
文档讲解:https://programmercarl.com/0104.%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%A4%A7%E6%B7%B1%E5%BA%A6.html
力扣题目:https://leetcode.cn/problems/maximum-depth-of-binary-tree/description/

这道题还是使用递归的办法,前序遍历和后序遍历都可以实现,先讲一下后序遍历的代码,主要流程就是不断向下摸索去找,然后深度就等于1+左子树的深度和右子树深度的最大值,需要注意的是,判断节点为空的语句不能再主函数,因为每次调用getDepth函数都要去判断节点是否为空。

class Solution {
public:
//后序遍历int getDepth(TreeNode *node){//如果是空节点,返回0if(!node){return 0;}int left=getDepth(node->left);int right=getDepth(node->right);int depth=1+max(left,right);return depth;}int maxDepth(TreeNode *root){int result= getDepth(root);return result;}

接下来再来讲前序遍历,前序遍历比较符合我们的思路去从上而下找到子树的最大深度,往下走就depth++,找到头之后就要回溯到原来分叉的节点,所以depth–,知道函数结束,depth的值就是子树的最大深度。

//前序遍历,容易理解
class Solution {
public:int result;void getDepth(TreeNode *node, int depth){result= depth>result ? depth: result;//如果左右子树不存在,返回0if(node->left==NULL &&node->right==NULL){return;}if(node->left){depth++;getDepth(node->left,depth);//回溯depth--;}if(node->right){depth++;getDepth(node->right,depth);//回溯depth--;}return;}int maxDepth(TreeNode* root) {//初始化resultresult=0;//如果节点为空,返回resultif(!root) return result;//节点不为空getDepth(root,1);return result;}
};

同时附上C代码,与后序遍历思想类似,直接递归到叶子节点,求深度的最大值+1.

int maxDepth(struct TreeNode* root) {//如果节点不存在,直接等于0if(!root){return 0;}//节点存在,递归左节点和右节点int left= maxDepth(root->left);int right=maxDepth(root->right);int max =left>right ? left :right;return max+1;
}
http://www.lryc.cn/news/614604.html

相关文章:

  • 三种 SSE 对比
  • 【LLM开发学习】
  • 十三、抽象队列同步器AQS
  • ClickHouse集群部署实践---3分片2副本集群
  • 【C#】掌握并发利器:深入理解 .NET 中的 Task.WhenAll
  • 宝龙地产债务化解解决方案一:基于资产代币化与轻资产转型的战略重构
  • MMBFJ310LT1G一款N沟道JFE 晶体管适用于高频放大器和振荡器等射频应用MMBFJ310LT1
  • 【vue】Vue 重要基础知识清单
  • 全面解析软件工程形式化说明技术
  • Vue 服务端渲染(SSR)详解
  • 页面tkinter
  • 初始化完数据库提示缺少server文件的处理方法
  • C 语言链表数据结构
  • 接口为什么要设计出v1和v2
  • 升级的MS9122S USB投屏控制芯片(HD输出)
  • Prometheus 通过读取文件中的配置来监控目标
  • 安科瑞EMS3.0:打造“零碳工厂”的智能能源神经中枢
  • 【Spring Boot 快速入门】八、登录认证(一)基础登录与认证校验
  • 用 “故事 + 价值观” 快速建立 IP 信任感
  • Shell脚本实现自动封禁恶意扫描IP
  • 後端開發技術教學(三) 表單提交、數據處理
  • vscode EIDE 无法编译,提示 “文件名、目录名或卷标语法不正确;
  • WPF 表格中单元格使用下拉框显示枚举属性的一种方式
  • 数据大集网:重构企业贷获客生态的线上获客新范式​
  • Ignite内部事件总线揭秘
  • Android 之 OOM的产生和解决办法
  • K-Means 聚类
  • 嵌入式第二十三课 !!!树结构与排序(时间复杂度)
  • AD布线时,如何设置线宽和线间距?简单
  • OpenAI 时隔多年再开源!GPT-OSS 120B/20B 发布,支持本地部署,消费级 GPU 即可运行