题解 | 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;
    }
}
全部评论

相关推荐

09-30 15:27
已编辑
成都工业学院 企业文化
Morpheus_:候选人:还需要测验武力值?
投递腾讯等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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