Use dfs() to go through every node of the tree, and use recur() to calculate the max diameter of the node. Use max to store the value of diameter.

```
public class Solution {
private int max;
public int diameterOfBinaryTree(TreeNode root) {
max = 0;
dfs(root);
return max;
}
private int recur(TreeNode node) {
if(node == null) return 0;
return Math.max(recur(node.left),recur(node.right)) + 1;
}
private void dfs(TreeNode node) {
if(node != null) {
max = Math.max(max, recur(node.left) + recur(node.right));
} else {
return;
}
dfs(node.left);
dfs(node.right);
}
}
```