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

LeetCode:40.二叉树的直径

目录

1.二叉树的直径


1.二叉树的直径

        假设我们知道对于该节点的左子树向下遍历经过最多的节点数 left和其孩子向下遍历经过最多的节点数 right ,那么以该节点为起点的路径经过节点数的最大值即为 left+right+1 。

        我们记节点 node 为起点的路径经过节点数的最大值为 dnode ,那么二叉树的直径就是所有节点 dnode的最大值减一

        具体的操作为:我们定义一个递归函数 depth(node) 计算 dnode,函数返回该节点为根的子树的深度。先递归调用左子树和右子树求得它们为根的子树的深度 left 和 right ,则该节点为根的子树的深度即为max(left,right)+1,该节点的 dnode值为left+right+1,递归搜索每个节点并设一个全局变量 ans 记录 dnode的最大值,最后返回 ans-1 即为树的直径

class Solution {int ans;
public:int depth(TreeNode* root){if(root == nullptr)return 0;int left = depth(root->left);int right = depth(root->right);ans = max(ans, left + right + 1);return max(left, right) + 1;}int diameterOfBinaryTree(TreeNode* root) {ans = 1;depth(root);return ans - 1;}
};

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

相关文章:

  • dplyr 是 R 语言中一个革命性的数据操作包,它的名字是 “data plier“ 的缩写,意为“数据折叠器“或“数据操作器“
  • 使用Node.js和PostgreSQL构建数据库应用
  • 设计模式(C++)详解—享元模式(1)
  • C++线程池学习 Day08
  • VALUER倾角传感器坐标系的选择
  • 解决 win+R 运行处以及文件资源管理器处无法使用 wt、wsl 命令打开终端
  • R语言 生物分析 CEL 文件是 **Affymetrix 基因芯片的原始扫描文件**,全称 **Cell Intensity File**。
  • Apache Spark Shuffle 文件丢失问题排查与解决方案实践指南
  • xtuoj 0x05-C 项链
  • STM32F429I-DISC1【读取板载运动传感器数据】
  • 【Kafka面试精讲 Day 21】Kafka Connect数据集成
  • 2025数据资产管理平台深度分析:技术特性、与选型逻辑
  • RabbitMQ Java 解决消息丢失、重复和积压问题
  • 深入解析 Spring AI 系列:解析请求参数处理
  • OpenLayers地图交互 -- 章节五:捕捉交互详解
  • 阿瓦隆1566HA-448T矿机深度解析:性能、效率与冷却技术
  • 平替confluence,推荐一款国产开源免费的知识管理工具 - sward
  • 【开源】基于STM32的智能垃圾桶
  • RuoYi-Cloud问题:访问https的网关地址,实际是访问http的文件服务
  • HttpClientFactory vs new HttpClient:.NET Core HTTP 客户端的正确打开方式
  • MySQL数据库(七)—— 基于主主复制与 Keepalived 非抢占模式的高可用方案
  • 如何提高Java并发编程的实战能力?
  • JavaWeb 课堂笔记 —— 17 SpringBootWeb案例 部门管理
  • java设计模式四,原型模式
  • 【NOIP 2024 T2】遗失的赋值
  • TypeScript学习笔记1
  • Android普通应用切到后台后,多长时间会被系统回收
  • 【Elasticsearch面试精讲 Day 21】地理位置搜索与空间查询
  • 【Android】View 的滑动
  • 【深度学习的优化理论】如何理解OT与欧几里得距离均值的区别