没有合适的资源?快使用搜索试试~ 我知道了~
文章目录二叉树的直径题目解题思路代码实现实现结果 二叉树的直径 题目来源:https://leetcode-cn.com/problems/diameter-of-binary-tree/ 题目 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。 示例 : 给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。 注意:两结点之间的路径长度是以它们之间边的数目表示。 解
资源推荐
资源详情
资源评论
LeetCode 二叉树的直径二叉树的直径
文章目录文章目录二叉树的直径题目解题思路代码实现实现结果
二叉树的直径二叉树的直径
题目来源:https://leetcode-cn.com/problems/diameter-of-binary-tree/
题目题目
给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过
根结点。
示例示例 :
给定二叉树
1
/ \
2 3
/ \
4 5
返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。
注意:两结点之间的路径长度是以它们之间边的数目表示。
解题思路解题思路
这里需要注意,二叉树的直径(最长路径),有可能不经过根节点。如下图所示:
在这里,求二叉树的直径,即是求最长路径。先判断问题是否划分为子问题。其实二叉树路径的问题,就是选择问题:
1
/ \
2 3
1. [左] 2 - 1
2. [右] 3 - 1
3. [左中右],2 - 1 - 3
根据上面的解析,那么现在将问题划分为:
二叉树最长路径 = max{[左],[右],[左中右]}
其中 [左],[右],这两种情况可以用递归进行求解,因为叶子节点路径为 0,往上走,例如 2 - 1,长度 + 1,也就是左右节点递
归返回值 + 1。
而 [左中右] 这种情况情况,其实就是 左 + 右。
代码实现代码实现
class Solution:
def diameterOfBinaryTree(self, root: TreeNode) -> int:
self.ans = 0
def diameter_of_binary_tree(node, ans):
# 递归出口
if not node:
资源评论
weixin_38527978
- 粉丝: 5
- 资源: 900
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于JavaScript 实现的KMP 算法
- 基于C++实现二叉树的创建,遍历,添加,查找与删除
- 基于C语言实现二叉树的基本操作
- 毕业设计基于STM32的测量温度与压力的数据处理设计C语言完整源码+论文.zip
- 基于MATLAB的PCA算法人脸识别项目源码+GUI界面+说明文档.zip
- 基于STM32的测量温度与压力的数据处理设计源码+论文(毕业设计).zip
- Vision Transformer 网络对不同氨气氧气浓度轨迹RAS 图像数据集的分类,包含训练权重和数据集、迁移学习
- 基于C51带字库LCD12864(ST7920)的keil工程源码,只支持8位并口通讯(不支持串口),可显示中文.zip
- 基于SI4463射频模块433MD-SMA无线模块软硬件技术资料及(SI4463)IC技术资料文档.zip
- (GPS+北斗+GSM)HLK-GS2503模块软硬件开发资料包硬件参考设计(原理图PCB)+技术文档资料.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功