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

清新网站设计考研培训机构排名前十

清新网站设计,考研培训机构排名前十,小程序企业网站源码,顺德网站建设服务平台一、摘要 嗨喽呀大家,leetcode每日一题又和大家见面啦,今天要讲的是104.二叉树的最大深度,思路互相学习,有什么不足的地方欢迎指正!好啦让我们开始吧!!! 二、题目简介 给定一个二…

一、摘要

嗨喽呀大家,leetcode每日一题又和大家见面啦,今天要讲的是104.二叉树的最大深度,思路互相学习,有什么不足的地方欢迎指正!好啦让我们开始吧!!!

二、题目简介

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

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

示例 1:

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

示例 2:

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

提示:

  • 树中节点的数量在 [0, 104] 区间内。
  • -100 <= Node.val <= 100

三、思路详解

针对这道题我先补充一个递归的图像,能够帮我更好理解它递归的过程。图画由于是手画有点潦草

1. 递归法(深度优先搜索)

递归法是求解二叉树问题的常用方法。我们可以使用深度优先搜索(DFS)来遍历二叉树,找到从根节点到最远叶子节点的最长路径。

思路:
  • 如果当前节点为空,返回深度 0。

  • 递归计算左子树和右子树的最大深度。

  • 当前节点的最大深度等于左子树和右子树的最大深度中的较大值加 1。

代码实现:
int maxDepth(struct TreeNode* root) {if (root == NULL) return 0;  // 空节点的深度为0// 递归计算左子树和右子树的最大深度int leftDepth = maxDepth(root->left);int rightDepth = maxDepth(root->right);// 当前节点的最大深度为左右子树最大深度的较大值加1return (leftDepth > rightDepth ? leftDepth : rightDepth) + 1;
}

2. 迭代法(广度优先搜索)

迭代法使用队列来实现广度优先搜索(BFS),可以避免递归的深度限制问题。

思路:
  • 使用一个队列来存储待访问的节点,每个节点附带其深度信息。

  • 从根节点开始,将其深度设为 1。

  • 遍历队列中的每个节点,更新最大深度。

  • 将左右子节点(如果存在)加入队列,深度加 1。

代码实现:
int maxDepth(struct TreeNode* root) {if (root == NULL) return 0;  // 空树的最大深度为0struct TreeNode* queue[10000];  // 队列,假设最多10000个节点int depth[10000];  // 每个节点的深度int front = 0, rear = 0;int maxDepth = 0;queue[rear] = root;depth[rear] = 1;rear++;while (front < rear) {struct TreeNode* node = queue[front];int currentDepth = depth[front];front++;maxDepth = (currentDepth > maxDepth) ? currentDepth : maxDepth;if (node->left) {queue[rear] = node->left;depth[rear] = currentDepth + 1;rear++;}if (node->right) {queue[rear] = node->right;depth[rear] = currentDepth + 1;rear++;}}return maxDepth;
}

3. 前,中,后序遍历

思路:
  • 后序遍历:先计算左子树和右子树的最大深度,再处理当前节点。

  • 前序遍历:先处理当前节点,再计算左子树和右子树的最大深度。

  • 中序遍历:先计算左子树的最大深度,处理当前节点,再计算右子树的最大深度。

  • 在计算最大深度时,这些遍历顺序并没有实际影响,因为左右子树的最大深度是独立计算的,最终结果只取决于左右子树的最大深度。

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

  • 无论采用哪种遍历顺序(前序、中序、后序),最终都需要计算左子树和右子树的最大深度,并取较大值加 1。

代码实现:
int maxDepth(struct TreeNode* root) {if (root == NULL) return 0;  // 空节点的深度为0// 递归计算左子树和右子树的最大深度int leftDepth = maxDepth(root->left);int rightDepth = maxDepth(root->right);// 当前节点的最大深度为左右子树最大深度的较大值加1return (leftDepth > rightDepth ? leftDepth : rightDepth) + 1;
}

好啦,其实这类型的题目大致思路都是一样的,看完这些思路之后可以针对性的多做几道练习,今天的讲解就到这里啦。我们明天见! 

http://www.sczhlp.com/news/39302/

相关文章:

  • 网站的做网站公司阿里云域名注册流程
  • 淘宝 做网站空间 条件seo外推软件
  • 小说投稿赚钱的网站seo学校培训
  • 开什么店投资小利润高西安seo优化公司
  • 福州外包seo公司做专业搜索引擎优化
  • 如何查看网站根目录如何做网站推广及优化
  • 南宁百度快速优化网络优化工程师为什么都说坑人
  • 朝阳公园网站建设搜索引擎调词软件
  • 苏州网站设计淘宝店铺如何推广
  • 企业app商城开发网站建设百度seo刷排名软件
  • 网站的技术分析seo网络推广案例
  • 建设路小学查分网站近几年的网络营销案例
  • 做贸易上什么网站新闻最近新闻10条
  • 东南亚做网站 什么语言郑州seo公司排名
  • 深圳网站建设分期付seo引擎优化外包公司
  • 找人做彩票网站多少钱网站模板大全
  • 利为汇wordpress网站优化排名哪家性价比高
  • 网站开发国际化外链网盘系统
  • 新疆做网站的公司有哪些关键词查询网址
  • 读大语言模型07高维数学
  • 网业版浏览器手机优化大师官方版
  • 告别框架臃肿-我如何在不牺牲性能的情况下重新发现简单之美
  • 你的项目一团糟-不是你的错-是框架的锅
  • 超越-env-一份成熟的应用程序配置指南
  • 你的部署流程已然落伍-热重启的失传艺术
  • 安全不是一个功能-而是一个地基
  • 中山网站建设外包网站关键词优化排名公司
  • 广州网站建设总结营销软文范例大全300字
  • 陈木胜谢霆锋外贸seo站
  • 关键词排行优化网站在哪买网站链接