# 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

For example: Given binary tree
```     5
/  \
3    20
/ \
7   8
Return 3 as diameter [3,5,20,8] or [3,5,20,7]
```

Diameter of a node is the `lheight+rheight`. The problem can be solved with a similar approach involved in finding the height of the binary tree. Along with calculating the height maintain a variable to have the max diameter.

``````public class Solution {
int maxd = 0;
public int diameterOfBinaryTree(TreeNode root) {
height(root);
return maxd;
}

public int height(TreeNode root) {
if (root == null)
return 0;
int lh = height(root.left);
int rh = height(root.right);
int d = lh + rh;
if (d > maxd)
maxd = d;
return 1 + Math.max(lh, rh);
}

static class TreeNode {
TreeNode left;
TreeNode right;
int val;

public TreeNode(int value) {
this.val = value;
}
}
}``````