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

力扣 hot100 Day36

543. 二叉树的直径

给你一棵二叉树的根节点,返回该树的 直径 。

二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。

两节点之间路径的 长度 由它们之间边数表示。

//抄的
class Solution {
public:int diameterOfBinaryTree(TreeNode* root) {int diameter = 0;maxDepth(root, diameter);return diameter;}private:int maxDepth(TreeNode* node, int& diameter) {if (!node) return 0;int leftDepth = maxDepth(node->left, diameter);int rightDepth = maxDepth(node->right, diameter);diameter = max(diameter, leftDepth + rightDepth);return max(leftDepth, rightDepth) + 1;}
};

很直观能想到和最大深度相关。

在求最大深度过程中,利用引用维护一个diameter,对应最大长度。

最大深度函数仍旧是递归逻辑,对于一个根节点,最大深度为max(left,right)+1。

主要是实时记录diameter,相当于在递归中实现了每个根节点中比较一次diameter和左深度+右深度,从而做到不遗漏。

http://www.xdnf.cn/news/14848.html

相关文章:

  • 系统架构设计师论文分享-论软件体系结构的演化
  • C++ 模板宏相关
  • 力扣网编程45题:跳跃游戏II之正向查找方法(中等)
  • 容声W60以光水离子科技实现食材“主动养鲜”
  • 爬虫-协议基础
  • XHTML 简介
  • 使用LIMIT + OFFSET 分页时,数据重复的风险
  • Spring Bean 控制销毁顺序的方法总结
  • stm32的三种开发方式
  • js游戏简单修改
  • 【每天一个知识点】子空间聚类(Subspace Clustering)
  • SpringCloud系列(50)--SpringCloud Stream消息驱动之实现消费者
  • Python Async/Await 异步编程详解
  • <script setup>中的setup作用以及和不带的区别对比
  • 【UnityAssetBundle】异步加载
  • 【ESP32-IDF笔记】09-UART配置和使用
  • 基于大模型的领域知识图谱构建--python语言实现
  • Qt处理USB摄像头开发说明与QtMultimedia与V4L2融合应用
  • 二叉树题解——二叉搜索树中第 K 小的元素【LeetCode】使用外部变量ans记录答案
  • MyChrome.exe与Selenium联动避坑指南:User Data目录冲突解决方案
  • 60天python训练营打卡day52
  • Python gmssl.SM4使用案例
  • 动手学深度学习-学习笔记(总)
  • IDEA中application.yml配置文件不自动提示解决办法
  • 运算方法和运算器补充
  • 【AI大模型面试八股文】大模型训练中如何应对灾难性遗忘问题?
  • Swagger 安装使用教程
  • RabbitMQ 4.1.1初体验
  • 一个简单的分布式追踪系统
  • 区块链技术在物联网(IoT)中的核心应用场景