Maximum Width of Binary Tree

Rangesh Sripathi
2 min readJan 4, 2022


Problem :

Given the root of a binary tree, return the maximum width of the given tree.

The maximum width of a tree is the maximum width among all levels.

The width of one level is defined as the length between the end-nodes (the leftmost and rightmost non-null nodes), where the null nodes between the end-nodes are also counted into the length calculation.

It is guaranteed that the answer will in the range of 32-bit signed integer.

Input: root = [1,3,2,5,3,null,9]
Output: 4
Explanation: The maximum width existing in the third level with the length 4 (5,3,null,9).

Solution :

Intention is at each level of tree ( BFS- Level Order Traversal) pick the maximum of (right index — Left index)+1, where index = if its a left node 2*Level and if its right node 2*Level+1. In the above case when indexes are applied the Tree would get translated as below

Code snippet :

* Definition for a binary tree node.
* public class TreeNode {
* public int val;
* public TreeNode left;
* public TreeNode right;
* public TreeNode(int val=0, TreeNode left=null, TreeNode right=null) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }

public class NodeInfo{
public TreeNode node;
public int pos;
public NodeInfo(TreeNode _node,int _pos){

public int getPos(){
return pos;
public TreeNode getNode(){
return node;

public class Solution {
public int WidthOfBinaryTree(TreeNode root) {
return 0;
var maxwidth=0;
var linkedlist = new LinkedList<NodeInfo>();
linkedlist.AddLast(new NodeInfo(root,0));
var len=linkedlist.Count();
for(int i=0;i<len;i++){
var element=linkedlist.First();

linkedlist.AddLast(new NodeInfo(element.getNode().left,element.getPos()*2));

linkedlist.AddLast(new NodeInfo(element.getNode().right,element.getPos()*2+1));


return maxwidth;

Reference :