543. Diameter of Binary Tree

Given a binary tree, you need to compute the length of the diameter of the tree. The diameter of a binary tree is the length of the longest path between any two nodes in a tree. This path may or may not pass through the root.

Example:
Given a binary tree 

          1
         / \
        2   3
       / \     
      4   5    

 

Return 3, which is the length of the path [4,2,1,3] or [5,2,1,3].

Note: The length of path between two nodes is represented by the number of edges between them.

 1 class Solution {
 2     public int diameterOfBinaryTree(TreeNode root) {
 3         int[] max = new int[1];
 4         helper(root, max);
 5         return max[0] - 1;
 6     }
 7 
 8     public int helper(TreeNode root, int[] max) {
 9         if (root == null) return 0;
10         int leftMaxHeight = helper(root.left, max);
11         int rightMaxHeight = helper(root.right, max);
12         
13         int tempMax = leftMaxHeight + rightMaxHeight + 1;
14         max[0] = Math.max(max[0], tempMax);
15         if (leftMaxHeight > rightMaxHeight) {
16             return leftMaxHeight + 1;
17         }
18         return rightMaxHeight + 1;
19     }
20 }

 

posted @ 2019-05-20 01:39  北叶青藤  阅读(242)  评论(0)    收藏  举报