543.二叉树的直径

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

本题需要明确二叉树的直径计算方法:

  • 二叉树的直径不一定过根节点,需要遍历左子节点和右子节点。
  • root的直径 = 左子树深度+右子树的深度+1
  • root的高度 = Max(左子树深度,右子树深度) + 1
    所以保存一个节点当前直径最大值,再递归的求每个节点左右子树的深度,每次递归都保存直径最大值,最后返回即可。
class Solution:def diameterOfBinaryTree(self, root: Optional[TreeNode]) -> int: result=[]def getdepth(root):if not root:return 0left=getdepth(root.left)right=getdepth(root.right)result.append(left+right+1)return 1+max(left,right)getdepth(root)return max(result)-1

这里强调一波概念:

  • 二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数。
  • 二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数。
  • 二叉树的直径, 相当于求其任意两个节点的最大路径, 这又可以转化为每个节点的左子树深度+右子树深度+1 。
  • 但leetcode中强调的深度和高度很明显是按照节点来计算的,如图:

543.二叉树的直径相关推荐

  1. LeetCode Algorithm 543. 二叉树的直径

    543. 二叉树的直径 Ideas 这题貌似也在左神算法里见过. 基本思想就是递归,根节点从左子树获得一个想要的信息,从右子树获得一个想要的信息,然后对两个信息进行处理. 其实可以把直径分成两半看:从 ...

  2. 543. 二叉树的直径

    543. 二叉树的直径 描述 给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过也可能不穿过根结点. 示例 : 给定二叉树 1/ \2 3/ ...

  3. 543. 二叉树的直径 golang

    文章目录 543. 二叉树的直径 example 正确解法 question 代码(wrong) 543. 二叉树的直径 概要: 借鉴了这个题的代码.可是有一个测试用例过不去 https://blog ...

  4. 【LeetCode】【HOT】543. 二叉树的直径(递归)

    [LeetCode][HOT]543. 二叉树的直径 文章目录 [LeetCode][HOT]543. 二叉树的直径 package hot;class TreeNode{int val;TreeNo ...

  5. Java实现 LeetCode 543 二叉树的直径

    543. 二叉树的直径 给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过根结点. 示例 : 给定二叉树 1/ \ 2 3 / \ 4 5 ...

  6. LeetCode 543二叉树的直径-简单

    给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过也可能不穿过根结点. 示例 : 给定二叉树 1/ \2 3/ \ 4 5 返回 3, 它的 ...

  7. LeetCode 543. 二叉树的直径(DFS)

    1. 题目 给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过根结点. 示例 : 给定二叉树1/ \2 3/ \ 4 5 返回 3, 它的长 ...

  8. leetcode - 543. 二叉树的直径

    给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过根结点. 示例 : 给定二叉树 解题思路:使用递归,注意递归和迭代的区别 class So ...

  9. 【LeetCode笔记】543. 二叉树的直径(Java、dfs、二叉树)

    文章目录 题目描述 思路 & 代码 题目描述 思路 & 代码 由这个结论考虑:直径中一定有一个父结点,那么当前直径长度就是: 当前父结点的左子树深度 + 右子树深度 那么,只要遍历所有 ...

最新文章

  1. R语言使用pie函数可视化饼图(pie chart)、为饼图添加百分比信息、使用plotrix包可视化3D饼图、使用plotrix包可视化扇形饼图
  2. 平面上给定n条线段,找出一个点,使这个点到这n条线段的距离和最小。
  3. Android 屏幕旋转时Activity的变化
  4. 奖金16万!首届电子商务AI算法大赛ECAA报名开启
  5. Android TextView 手动上下滑动
  6. 逻辑漏洞——会话管理问题
  7. 听说读论文也有trick?这篇文章告诉你深度学习论文阅读最佳姿势
  8. 网络安全系列之培训笔记整理
  9. Layout state should be one of 100 but it is 10起因和解决
  10. 分享这几个好用的文字识别软件,教你快速识别
  11. 程序员应该写文档吗?
  12. Ubuntu 16.04 解决WPS for Linux提示“系统缺失字体symbol、wingdings、wingdings 2、wingdings 3、webding”的问题
  13. Java中submit的方法,线程池中 submit()和 execute()方法区别
  14. windows下qt的环境配置
  15. STM32cubeMX:双通道ADC(DMA)
  16. [附源码]java毕业设计社区生鲜电商平台
  17. 记一次钉钉群聊机器人的开发
  18. 数据挖掘第二章 认识数据
  19. 一文读懂高速互联的阻抗及反射(中)
  20. pjsip for android,编译pjsip for Android

热门文章

  1. Tableau 超市经典案例之利润分析(二)
  2. 柳传志一生最大的过错
  3. 保研之路------尘埃落定(复旦,同济,北邮)
  4. 工作流应用场景简单介绍
  5. 马原期末复习3. 经济基础和上层建筑之间的矛盾
  6. 会议OA项目之待开会议所有会议
  7. YOLOv5的Backbone详解
  8. 月报 | 公众号 10 月文章汇总
  9. SkyEye——如何实现1553B总线仿真?
  10. taobao.trade.fullinfo.get( 获取单笔交易的详细信息 )淘宝订单接口