Maximum width of a binary tree

PROBLEM :

Given a Binary Tree, find the maximum width of it.  Maximum width is maximum number of nodes in any level.  For example, maximum width of following tree is 4 as there are 4 nodes at 3rd level

          1
       /     \
     2        3
   /    \    /    \
  4    5   6    7
    \
      8

           

Input:
The task is to complete the method that takes root of tree as an argument.

There are multiple test cases. For each test case, this method will be called individually.

Output:
The function should return maximum width of tree.

Constraints:
1 <=T<= 30
1 <= Size of arrays <= 100
1 <= Values in arrays <= 1000

Example:
Input:
2
2
1 2 R 1 3 L
4
10 20 L 10 30 R 20 40 L 20 60 R


Output:
2
2

There are two test casess.  First case represents a tree with 3 nodes, 2 edges. Here root is 1, left child of 1 is 3 and right child of 1 is 2.   Second test case represents a tree with 4 edges and 5 nodes.

--------------------------------------------------------------------------------
SIMPLE c++ IMPLEMENTATION :
--------------------------------------------------------------------------------

/*  Structure of a Binary Tree
struct Node
{
    int data;
    struct Node* left, *right;
}; */

/* Function to get the maximum width of a binary tree*/

void print(struct Node *,int ,int *) ;
int height(struct Node *) ;

int getMaxWidth(Node* root)
{
    if(root==NULL)
    return 0 ;
    int h,i,max,count ;
   
    h=height(root) ;
    max=0 ;
    for(i=1;i<=h;i++)
    {
       count=0 ;
       print(root,i,&count) ;
       if(count>max)
        max=count ;
    }
    return max ;
}

void print(struct Node *root,int level,int *count)
{
    if(root==NULL)
        return ;
    if(level==1)
       (*count)++ ;
    else
    {
    print(root->left,level-1,&(*count)) ;
    print(root->right,level-1,&(*count)) ;
    }
   
}

int height(struct Node *root)
{
    if(root==NULL)
    return 0 ;
   
    int L,R ;
    L=height(root->left) ;
    R=height(root->right) ;
   
    return(L>R?(L+1):(R+1)) ;
}


---------------------------------------------------------------------------------

Comments

Popular posts from this blog

Count ways to N'th Stair(Order does not matter)

Replace all ‘0’ with ‘5’ in an input Integer

Chocolate Distribution Problem

Remove characters from the first string which are present in the second string

Primality Test ( CodeChef Problem code: PRB01 )