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

[leetcode100] 543. 二叉树的直径

https://leetcode.cn/problems/diameter-of-binary-tree/description/?envType=study-plan-v2&envId=top-100-liked

题目描述:给一个二叉树,返回二叉树直径最大值。直径指的是二叉树中任意一个结点到另外一个结点产生路径的长度。而长度由边来代表。

思路

  1. 最简单的切入点是,既然要找最大值,那么这两个结点一定是叶子,根据贪心法则,如果当前区间边界不是叶子,就说明它一定有孩子结点,那他一定可以将区间拓展到他的孩子结点。所以最终的答案区间边界一定是叶子结点
  2. 既然答案一定是叶子结点,那么孩子结点连城路径一定会经过非叶子结点,所以遍历思路就出来了。遍历非叶子结点。
  3. 而答案路径很好表示,假设你选定当前这个非叶子结点作为路径通路。那么经过这个结点的最大直径,一定是左子树高度加上右子树高度。

根据上面结果整体解题思路以及大概的代码逻辑都出来了。
就是遍历一下非叶子结点,算一下左右两边子树高度,记录最大值就好了。
然后编码实际上用计算高度的递归就好了

/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/func ans(root *TreeNode, res *int) int{if root == nil {return 0}left := ans(root.Left, res)right := ans(root.Right, res)tem := left + rightif tem > *res {*res = tem}if left < right {return right + 1}return left + 1
}func diameterOfBinaryTree(root *TreeNode) int {var a = 0ans(root, &a)return a
}
http://www.lryc.cn/news/503861.html

相关文章:

  • 嵌入式学习(18)-stm32F407串口接收空闲中断+DMA
  • b站视频爬虫-词云分析
  • 如何防止订单二次重复支付?
  • LeetCode 24反转链表
  • 用python的flask写的一个MQTT中转功能,http的方式发送数据和接收数据
  • img引入svg如何修改颜色
  • 计算机毕业设计PySpark+PyFlink+Hive地震预测系统 地震数据分析可视化 地震爬虫 大数据毕业设计 Hadoop 机器学习 深度学习
  • 【Python】使用Numpy实现余弦相似度计算
  • nginx中的root和alias的区别
  • 探索Telnet:实现Windows远程登录Ubuntu的实践指南
  • 在 Vue 2 中隐藏页面元素的方法
  • 【Java】Java8的4个函数式接口简单教程
  • 计算机组成原理与系统结构——微程序控制
  • 【Swift】集合类型 - 数组、集合、字典
  • 3D 视觉定位技术:汽车零部件制造的智能变革引擎
  • 操作系统的基本认识
  • 使用pycharm连接远程服务器
  • 【Linux SH脚本】LinuxCheck 应急检查信息脚本
  • apifox创建一个mock接口
  • 设计一个基础JWT的多开发语言分布式电商系统
  • 委托(Delegate)与事件(Event)-(上篇)
  • Scala根据身份证前两位数判断地区
  • freeswitch(开启支持视频H264通话)
  • 启发式搜索算法和优化算法的区别
  • 数据结构初阶---二叉树---堆
  • 微信小程序中 crypto-js 加解密全攻略
  • 单片机的软件开发环境
  • 【echarts】数据过多时可以左右滑动查看(可鼠标可滚动条)
  • Python 实现对人的行为预测
  • 使用枚举实现单例模式,不会反序列化破坏攻击,不会被反射破坏攻击。(附带枚举单例的简单实现)