题解 | JAVA #二叉树的直径# [P3]

二叉树的直径

http://www.nowcoder.com/practice/15f977cedc5a4ffa8f03a3433d18650d

每个node的max直径是(leftTreeHeight + rightTreeHeight).
设个Gobal var存目前看到的最大diameter. dfs返回当前node为root的treeHeight。

import java.util.*;

public class Solution {
    int diameter = 0;

    public int diameterOfBinaryTree (TreeNode root) {
      dfs(root);
      return diameter;
    }
    
    // returns height of the tree 
    int dfs(TreeNode root) {
      if (root == null) return 0;
      int lh = dfs(root.left);
      int rh = dfs(root.right);
      int curDiameter = lh + rh;
      diameter = Math.max(curDiameter, diameter);
        
      return Math.max(lh, rh) + 1;
    }
}
全部评论

相关推荐

敢逐云霄志:你打招呼语怎么能这么长,hr都没看下去的欲望,简明扼要说重点,就读于某某学校某某专业,26届应届毕业生,学信网可查,先后在某某公司实习过(如有),然后做过什么项目,想找一份什么样的工作,可实习几个月以上,期待您的回复。
点赞 评论 收藏
分享
11-19 18:44
已编辑
成都理工大学 Java
程序员花海:我面试过100+校招生,大厂后端面试不看ACM,竞赛经历含金量低于你有几份大厂实习 这个简历整体来看不错 可以海投
如何写一份好简历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务