二叉树的直径

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

示例 :
给定二叉树

1

/ \

2 3

/ \

4 5

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

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

思路:先用的方法是只计算根节点的左右节点的高度,然后返回两个数相加的和,但是发现有些情况并没有通过,是因为可能最长路径并不是通过根节点的,例如左孩子只有一个节点,但是右孩子的左右节点都很多,所以最后的方法是在计算二叉树的高度的时候比较左右子节点的高度的和与当前最长路径比较,最后返回最长路径。

 /**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
int maxNum = 0; public int diameterOfBinaryTree(TreeNode root) {
int n = 0;
if (root == null || (root.left == null && root.right == null)) {
return 0;
}
helper(root);
return maxNum;
} public int helper(TreeNode root) {
if (root == null) {
return 0;
}
int left = helper(root.left);
int right = helper(root.right);
if (left + right > maxNum) {
maxNum = left + right;
}
return left > right ? left + 1 : right + 1; }
}

最新文章

  1. Java 策略模式和状态模式
  2. MindManger 2016 64位 破解版
  3. [Ljava.lang.String和java.lang.String区别
  4. Varchar2 size how to decide?
  5. Swift UICollectionView 简单使用
  6. Jar mismatch! Fix your dependencies
  7. C#中List的Find方法的使用
  8. vs2010打包winform程序详解
  9. Protel DXP画原理图常见错误与警告
  10. NET 中的多线程
  11. JS自动化测试 单元测试之Qunit
  12. MySQL解决"is marked as crashed and should be repaired"故障
  13. C语言程序设计第五次作业——循环结构1
  14. VS下个人认为比较实用的插件
  15. 用户认证--auth模块实现
  16. oracle 11.2.0.4 dbca创建数据库时 报错ORA-12532
  17. java 读写 excle 完整版
  18. Entity Framework常用的查询方式
  19. 可视化库-seaborn-Facetgrid(第五天)
  20. java代码声明引用变量经验

热门文章

  1. sqlserver锁表、解锁、查看销表
  2. The 12th Zhejiang Provincial Collegiate Programming Contest - I Earthstone Keeper浙江省赛
  3. Android(java)学习笔记102:Dalivk虚拟机的初始化过程
  4. Mybatis-注解开发
  5. 深入理解计算机系统_3e 第十一章家庭作业 CS:APP3e chapter 11 homework
  6. 换了台电脑tomcat自己运行没问题,eclipse中配置tomcat开启了浏览器却404错误解决
  7. dataTable 自定义排序
  8. NopCommerce(Core)学习目录
  9. Python_装饰器、迭代器、生成器
  10. PHP之基本目录操作