543.二叉树的直径
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.二叉树的直径相关推荐
- LeetCode Algorithm 543. 二叉树的直径
543. 二叉树的直径 Ideas 这题貌似也在左神算法里见过. 基本思想就是递归,根节点从左子树获得一个想要的信息,从右子树获得一个想要的信息,然后对两个信息进行处理. 其实可以把直径分成两半看:从 ...
- 543. 二叉树的直径
543. 二叉树的直径 描述 给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过也可能不穿过根结点. 示例 : 给定二叉树 1/ \2 3/ ...
- 543. 二叉树的直径 golang
文章目录 543. 二叉树的直径 example 正确解法 question 代码(wrong) 543. 二叉树的直径 概要: 借鉴了这个题的代码.可是有一个测试用例过不去 https://blog ...
- 【LeetCode】【HOT】543. 二叉树的直径(递归)
[LeetCode][HOT]543. 二叉树的直径 文章目录 [LeetCode][HOT]543. 二叉树的直径 package hot;class TreeNode{int val;TreeNo ...
- Java实现 LeetCode 543 二叉树的直径
543. 二叉树的直径 给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过根结点. 示例 : 给定二叉树 1/ \ 2 3 / \ 4 5 ...
- LeetCode 543二叉树的直径-简单
给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过也可能不穿过根结点. 示例 : 给定二叉树 1/ \2 3/ \ 4 5 返回 3, 它的 ...
- LeetCode 543. 二叉树的直径(DFS)
1. 题目 给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过根结点. 示例 : 给定二叉树1/ \2 3/ \ 4 5 返回 3, 它的长 ...
- leetcode - 543. 二叉树的直径
给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过根结点. 示例 : 给定二叉树 解题思路:使用递归,注意递归和迭代的区别 class So ...
- 【LeetCode笔记】543. 二叉树的直径(Java、dfs、二叉树)
文章目录 题目描述 思路 & 代码 题目描述 思路 & 代码 由这个结论考虑:直径中一定有一个父结点,那么当前直径长度就是: 当前父结点的左子树深度 + 右子树深度 那么,只要遍历所有 ...
最新文章
- R语言使用pie函数可视化饼图(pie chart)、为饼图添加百分比信息、使用plotrix包可视化3D饼图、使用plotrix包可视化扇形饼图
- 平面上给定n条线段,找出一个点,使这个点到这n条线段的距离和最小。
- Android 屏幕旋转时Activity的变化
- 奖金16万!首届电子商务AI算法大赛ECAA报名开启
- Android TextView 手动上下滑动
- 逻辑漏洞——会话管理问题
- 听说读论文也有trick?这篇文章告诉你深度学习论文阅读最佳姿势
- 网络安全系列之培训笔记整理
- Layout state should be one of 100 but it is 10起因和解决
- 分享这几个好用的文字识别软件,教你快速识别
- 程序员应该写文档吗?
- Ubuntu 16.04 解决WPS for Linux提示“系统缺失字体symbol、wingdings、wingdings 2、wingdings 3、webding”的问题
- Java中submit的方法,线程池中 submit()和 execute()方法区别
- windows下qt的环境配置
- STM32cubeMX:双通道ADC(DMA)
- [附源码]java毕业设计社区生鲜电商平台
- 记一次钉钉群聊机器人的开发
- 数据挖掘第二章 认识数据
- 一文读懂高速互联的阻抗及反射(中)
- pjsip for android,编译pjsip for Android