How to calculate the height of a Non-Binary Tree

Computing the height of a tree in Computer Science is very common. Most of the examples and online discussions talk about computing the height of a Binary Tree.

The example method I am sharing can be used to compute the height of any tree. So even if you have a non-binary tree, you can use this method to get the tree height.

Since we are talking about a non-Binary tree, a node can have more than 2 children hence we have to declare the children as a list in the Node class. Here is the Node class.

class Node<E> {
	int height;
	Node<E> parent;
	List<Node<E>>childern;
}

As you can see we have a field of type Node to reference the parent node, and a list of Nodes to reference the children of this node.

Using this class definition with recursion we can compute the height of a tree (including non-Binary tree).

getTreeHeight:

public int getTreeHeight(Node<Integer> root) {
   int height = 0;
    if (root == null ) {
	return height;
    }
    if (root.childern == null) {
	return 1;
  }

   for (Node<Integer> child : root.childern) {
	height = Math.max(height, getTreeHeight(child));
  }
   return height + 1;
}