Given a pointer to the root of a binary tree, you need to print the level order traversal of this tree. In level-order traversal, nodes are visited level by level from left to right. Complete the function and print the values in a single line separated by a space.
For example:
1
\
2
\
5
/ \
3 6
\
4
For the above tree, the level order traversal is .
Input Format
You are given a function,
void levelOrder(Node * root) {
}
Constraints
Nodes in the tree
Output Format
Print the values in a single line separated by a space.
Sample Input
1
\
2
\
5
/ \
3 6
\
4
Sample Output
1 2 5 3 6 4
Explanation
We need to print the nodes level by level. We process each level from left to right.
Level Order Traversal: .
Solution :
/*
class Node {
public:
int data;
Node *left;
Node *right;
Node(int d) {
data = d;
left = NULL;
right = NULL;
}
};
*/
int height(Node *root){
if(root==NULL)
return 0;
return 1+max(height(root->left),height(root->right));
}
void levelOrder(Node * root) {
int h = height(root);
for(int d=1;d<=h;d++)
printLevelOrder(root,d);
}
void printLevelOrder(Node* root,int l){
if(root==NULL)
return;
if(l==1)
cout<<root->data<<" ";
else{
printLevelOrder(root->left,l-1);
printLevelOrder(root->right,l-1);
}
}
No comments:
Post a Comment