题目描述:

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

示例 :
给定二叉树

          1
/ \
2 3
/ \
4 5

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

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

思路分析:

对于每一个当前节点,选择左、右节点中最大的长度,然后加上1(当前路径),则是当前的最长路径深度。全局变量dis为直径,每次取左、右节点深度的和。

代码实现:

class Solution {
//设置一个类变量,用于记录最大直径
private int max = 0; public int diameterOfBinaryTree(TreeNode root) {
depth(root);
return max;
} private int depth(TreeNode root){
if(root == null){
return 0;
}
int leftDepth = depth(root.left);
int rightDepth = depth(root.right);
//max记录当前的最大直径
max = Math.max(leftDepth + rightDepth, max);
//由于我计算的直径是左树高度+右树高度,所以这里返回当前树的高度,以供使用
return Math.max(leftDepth, rightDepth) + 1;
}
}

最新文章

  1. 了解了下spring boot,说一下看法
  2. 复合梯形公式与Simpson公式的数值积分
  3. SQL学习记录
  4. Unix守护进程
  5. C#复习二(Twenty First Day)
  6. DDD分层架构之领域实体(验证篇)
  7. SolrCloud攻略
  8. 解决gstreamer无法播放的bug
  9. 织梦dedecms如何修改关键词的字数长度限制
  10. 多标签caffe重新编译
  11. 【Linux】Mac Centos install VMware Tools
  12. java 获取微信公众号code为空
  13. SSM Mybatis将新增数据写入数据库时出现的500状态码:Error updating database.的可能
  14. JxBrowser之三:常用函数setNetworkDelegate
  15. WPF编程,通过Path类型制作沿路径运动的动画另一种方法。
  16. SQLServer数据库还原:无法在已有的mdf文件上还原文件
  17. js中的async await
  18. FTP下载工具
  19. vue 拨打电话
  20. HDU 6070 Dirt Ratio(分数规划+线段树)

热门文章

  1. 创建多线程时,为何创建后需要Sleep?
  2. stm32 输入捕获
  3. (17)for循环
  4. Linux终端彩色显示输出结果
  5. 用js刷剑指offer(调整数组顺序使奇数位于偶数前面)
  6. CentOs Linux 对于Django uwsgi + Nginx 的安装与部署
  7. script标签中的async、defer属性
  8. Linux卸载Django
  9. idea 复制多条字符串
  10. C语言calloc()函数:分配内存空间并初始化——stm32中的应用