LeetCode 543-二叉树的直径

题目描述:

给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。

示例:

给定二叉树

LeetCode 543-二叉树的直径

返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。

注意:两结点之间的路径长度是以它们之间边的数目表示。

解答:

这道题是一个难度为简单的题目。开始的思路是只有经过根节点的路径才是最长的,那么这道题就是求根节点的左右子树的高度之和。于是代码如下:

go;gutter:true; /** * Definition for a binary tree node.</p> <ul> <li>type TreeNode struct {</li> <li>Val int</li> <li>Left *TreeNode</li> <li>Right *TreeNode</li> <li>} */</li> </ul> <p>func diameterOfBinaryTree(root <em>TreeNode) int { /</em> var lhight, rhight = 0, 0 if root == nil { return 0 }</p> <pre><code>if root.Left != nil { lhight = calHeight(root.Left) } if root.Right != nil { rhight = calHeight(root.Right) } if lhight > rhight { return lhight + rhight } else { return rhight + lhight } return 0 </code></pre> <p>}</p> <p>func calHeight(root *TreeNode) int { if root == nil { return 0 }</p> <pre><code>cnt := 0 lh := calHeight(root.Left) rh := calHeight(root.Right) if lh > rh { cnt = lh } else { cnt = rh } return cnt+1 </code></pre> <p>}</p> <pre><code> 但是最后并没有通过,无法通过下面这组用例。 ![LeetCode 543-二叉树的直径](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/695616-20200201185741522-1759254025.png) 正确的结果应该是8对应的是 [-1 0 6 9 -9 -7 -6 9 -2] 这条路径。 ![LeetCode 543-二叉树的直径](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/695616-20200201191309352-2016614757.png) 正确的方法是结合求二叉树高度的思路,我们只需要在求二叉树高度的代码中加入求最长路径的代码就可以了。 ;gutter:true;
/**
* Definition for a binary tree node.

* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/

var res int

func diameterOfBinaryTree(root *TreeNode) int {
res = 1 //初始的路径长度
calHeight(root)
return res-1
}

func calHeight(root *TreeNode) int {
if root == nil {
return 0
}

cnt := 0
lh := calHeight(root.Left) //左子树的长度
rh := calHeight(root.Right) //右子树的长度

if lh > rh {
cnt = lh
} else {
cnt = rh
}

if res < lh + rh + 1 { //lh+rh+1是本次遍历的路径的长度
res = lh + rh + 1 //更新res
}
return cnt+1
}

总结:

这道题并不难,但是我做了很久,主要是一开始的思路是错误的,然后我对二叉树的高度是如何求的也不是很熟悉,更多的是我的拖延和懒惰导致的。下次要注意。

Original: https://www.cnblogs.com/dennis-wong/p/12249885.html
Author: 成蹊0xc000
Title: LeetCode 543-二叉树的直径

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/582790/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 大厂们的 redis 集群方案

    redis 集群方案主要有两类,一是使用类 codis 的架构,按组划分,实例之间互相独立;另一套是基于官方的 redis cluster 的方案;下面分别聊聊这两种方案; 类 c…

    Linux 2023年5月28日
    096
  • redis编译安装

    redis是一个强大的NoSQL数据库,相对于memcached,他提供了更丰富的数据类型,有string、hash、list、set、sorted set这几种类型;还支持数据持…

    Linux 2023年5月28日
    0108
  • tcpreplay重放报文,tcpdump能抓到包,应用程序收不到包

    现象: 生产环境中有两台服务器A、B,A服务器实时有报文发往B服务器。为了在测试环境测试新功能,故在现网A服务器上tcpdump抓取发往B服务器的报文,然后在测试环境tcprewr…

    Linux 2023年6月14日
    0106
  • 详解 Serverless 架构的 6 大应用场景

    Serverless 架构将成为未来云计算领域重要的技术架构,将会被更多的业务所采纳。进一步深究,Serverless 架构在什么场景下有优秀的表现,在什么场景下可能表现得并不是很…

    Linux 2023年6月8日
    0100
  • 我叫Mongo,干了「索引探索篇」提升我的效率,值得您拥有

    这是mongo第四篇”索引探索”,后续会连续更新4篇 mongodb的文章总结上会有一系列的文章,顺序是先学会怎么用,在学会怎么用好,戒急戒躁,循序渐进,跟…

    Linux 2023年6月14日
    084
  • Windows安装Mysql.zip

    设定环境变量并新建配置文件 在系统环境变量 Path中新建刚刚下载的文件并解压的路径 E:\mysql-8.0.29-winx64\bin. 新建配置文件请参考以下文件, 将文件更…

    Linux 2023年6月7日
    0107
  • SQLI-LABS(Less-9、10)

    Less-9(GET-Blind-Time based-Single Quotes) 打开 Less-9页面,可以看到页面中间有一句 Please input the ID as …

    Linux 2023年6月6日
    0104
  • redis的间隔性速度慢的问题

    php操作redis,偶尔间歇性很慢.查看redis日志发现:Asynchronous AOF fsync is taking too long (disk is busy?). …

    Linux 2023年5月28日
    091
  • 解决微信Windows客户端无法播放视频问题

    问题描述 我的Windows端微信版本是3.6.0,更新后点开视频,没有播放按钮出现,并且过一会就会卡死,并且整个微信程序崩掉。 问题解决 后来发现,是微信客户端的 播放器插件问题…

    Linux 2023年6月14日
    0387
  • 等保测评2.0:Windows安全审计

    1、应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计 方案: 在管理工具打开本地安全策略,打开路径:安全设置\本地策略\审核策略,将全部审核策略配置为…

    Linux 2023年6月8日
    089
  • windows系统python3.6(Anaconda3)安装对应版本 torch、torchvision

    一、官网下载 .whl 文件 https://download.pytorch.org/whl/torch_stable.html 二、使用pip命令安装 打开你的anaconda…

    Linux 2023年6月14日
    086
  • .NET 6上的WebView2体验

    上次说为了不想在web端登录博客园,我想着还是继续使用 MarkWord编写博客,不过在使用的过程中,如果markdown文件的目录中有中文的话,Markdown预览就不能够显示粘…

    Linux 2023年6月6日
    0114
  • js阻止事件冒泡(phpcms,浮窗第一次10秒弹出后每30秒弹出,动态更换日期)

    /* v9_date_list 日期表 tiptime 考试日期(数据类型为日期) 如果要实现浮窗淡入淡出用jquery的(“#main0”).fadeIn…

    Linux 2023年6月13日
    0116
  • 解决报错 Microsoft Visual C++ 14.0 is required

    环境:Surface Windows 10 专业版 问题:安装 Python3 的第三方库 py7zr 时不成功。而报错的是另外一个依赖库 pycryptodomex distut…

    Linux 2023年6月14日
    0116
  • muduo项目介绍

    在上一个集群聊天服务器项目中,我使用了 muduo作为网络库,然后主要实现了业务逻辑等,所以为了深入网络库的代码和实现,我跟着一位老师的代码去实现了 muduo库的基本原理和作用,…

    Linux 2023年6月13日
    0109
  • Cookie

    题目如下 打开靶机 根据提示,需要admin登录才能得到flag,题目介绍为Cookie欺骗,认证,伪造 打开burpsuite进行抓包,HTTP数据包是可以修改cookie值的 …

    Linux 2023年6月7日
    084
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球