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

LC104 二叉树的最大深度

一.任务描述:

给定一个二叉树 root ,返回其最大深度。

二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。

示例 1:

输入:root = [3,9,20,null,null,15,7]

输出:3

示例 2:

输入:root = [1,null,2]

输出:2

二.解题思路:

递归思路

采用深度优先搜索(DFS)的后序遍历方式:

  • 基线条件:空节点深度为0

  • 递归关系:当前节点深度 = 1 + max(左子树深度, 右子树深度)

三.代码实现:

C

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*/
int maxDepth(struct TreeNode* root) {if (root == NULL) {return 0;}int left_depth = maxDepth(root->left);int right_depth = maxDepth(root->right);return 1 + (left_depth > right_depth ? left_depth : right_depth);
}

四.优化方向:

迭代解法避免栈溢出

对于深度很大的树,递归可能导致栈溢出,可以使用迭代方法:

C

// BFS迭代解法
int maxDepthBFS(struct TreeNode* root) {if (root == NULL) return 0;struct TreeNode** queue = malloc(10000 * sizeof(struct TreeNode*));int front = 0, rear = 0, depth = 0;queue[rear++] = root;while (front < rear) {depth++;int level_size = rear - front;for (int i = 0; i < level_size; i++) {struct TreeNode* node = queue[front++];if (node->left) queue[rear++] = node->left;if (node->right) queue[rear++] = node->right;}}free(queue);return depth;
}

五.总结:

1.核心技巧:

  • 分治思想:将大问题分解为小问题(子树)

  • 后序遍历:先处理子问题,再合并结果

  • 递归三要素:终止条件、递归过程、结果合并

2.扩展思考:二叉树的最小深度

C

int minDepth(struct TreeNode* root) {if (root == NULL) return 0;if (!root->left) return 1 + minDepth(root->right);if (!root->right) return 1 + minDepth(root->left);return 1 + fmin(minDepth(root->left), minDepth(root->right));
}

http://www.dtcms.com/a/524622.html

相关文章:

  • 如何构建企业级数据分析助手:Data Agent 开发实践
  • 网站内容 优化网站维护做啥的
  • Diffusion-TS:一种基于季节性-趋势分解与重构引导的可解释时间序列扩散模型​
  • LabVIEW连接本地部署大模型
  • Dart Sass 弃用警告修复教程:Deprecation Warning [global-builtin] 详解与解决方案
  • 专门做杂志的网站有哪些怎么给网站添加站点统计
  • Rust并发编程:免死金牌与实战
  • OkHttp连接复用
  • 返利网站程序wordpress导出出错
  • 网站外部优化郑州网站建设定制开发
  • 无线图传模块:引领科技未来的创新突破
  • 构建全栈JavaScript应用:Express与React的高效开发实践
  • 威海网站建设是什么免费网页空间
  • USB2.0枚举流程(以鼠标为例)——从零开始学习USB2.0协议(四)
  • hot100练习-17
  • 光伏发电建模与性能分析:从半导体物理到输出功率预测
  • 浙江正规网站建设配件网站seo优化分析
  • 设计师赚钱的网站创新的常州做网站
  • vue3的props的使用
  • 【Trae+AI】和Trae学习搭建App_03:后端API开发原理与实践(已了解相关知识的可跳过)
  • List of Keys (Keyboard,Mouse and Controller)
  • 门户网站怎样做wordpress清新模板
  • 沈阳有资质做网站的公司公司自有网站工信备案
  • 园林设计公司网站昆山网站建设网站
  • 【Linux】systemd 服务管理详解
  • Python哪个Excel库最好用?
  • 瓦力机器人-编码电机控制(基于树莓派5)
  • dw做网站怎么上线大良用户网站建设
  • Node.js 进阶:掌握高性能服务器开发的核心技术
  • Elasticsearch 的 SQL 与 DSL 转换