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)) ;
}
---------------------------------------------------------------------------------
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
Post a Comment