The Diameter of a Binary Tree or Width of a Binary Tree is the number of nodes on the longest path between two end nodes.

The diagram below shows the diameter 9 of the tree the leaves that forms ends of the longest path are in shaded (The longest path is 9).

Explanation:

1. The diameter of left subtree.

2. Diameter of right subtree.

3. Compare both the path.

Below is the **Recursive **implementation of the approach

```
public class BinaryTreeBT {
static class Node {
int data;
Node left;
Node right;
Node(int data) {
this.data = data;
this.left = null;
this.right = null;
}
}
// creating binary tree
static class BinaryTree {
static int id = -1;
public static Node createBinary(int nodes[]) {
id++;
if (nodes[id] == -1) {
return null;
}
Node myNode = new Node(nodes[id]);
myNode.left = createBinary(nodes);
myNode.right = createBinary(nodes);
return myNode;
}
/* function to insert element in binary tree */
public static Node add(Node current, int value) {
if(current == null){
return new Node(value);
}
if (value < current.data) {
current.left = add(current.left, value);
} else if (value > current.data) {
current.right = add(current.right, value);
} else {
// value already exists
return current;
}
return current;
}
}
// getting diameter of tree
public static class TreeDiam {
int ht, diam;
TreeDiam(int ht, int diam) {
this.ht = ht;
this.diam = diam;
}
}
public static TreeDiam getDiameter(Node root) {
if (root == null) {
return new TreeDiam(0, 0);
}
TreeDiam left = getDiameter(root.left);
TreeDiam right = getDiameter(root.right);
int myHeight = Math.max(left.ht, right.ht) + 1;
int dim1 = left.diam;
int dim2 = right.diam;
int dim3 = left.ht + right.ht + 1;
int myDiameter = Math.max(Math.max(dim1, dim2), dim3);
TreeDiam treeInfo = new TreeDiam(myHeight, myDiameter);
return treeInfo;
}
public static void main(String[] args) {
int nodeArr[] = { 1, 2, 4, -1, -1, 5, -1, -1, 3, -1, 6, -1, -1 };
BinaryTree tree = new BinaryTree();
Node result = tree.createBinary(nodeArr);
System.out.print(getDiameter(result).diam);
}
}
```

Answer: 5

See more **approaches**.

Suggested post

Can you **Find Height of The Binary Tree?**

Thank you for reaching out this tutorial. You can comment below in the comments section. See more **Data Structure Problems.**