TOP VIEW OF TREE

TO PRINT THE TOP VIEW OF A TREE:


SUPPOSE THE TREE IS OF STRUCTURE:
                            50
                       |              |
                    30            70
                 |         |       |       |
               20       40   60     80

FOR THE ABOVE TREE STRUCTURE THE OUTPUT SHOULD BE OF(INORDER TRAVERSAL) :

20->30->50->70->80

EVERYONE WILL FACE THE PROBLEM IN DOING RECURSION APPROACH.BECAUSE WE CAN'T TRAVERSE THROUGH THE RIGHT SUBTREE 

THE APPROACH IS :
            1.WHEN THE FUNCTION CALLED FIRST TIME  INITIALISE THE STATIC VARIABLE WITH A ROOT.
             2.NOW CHECK THE VALUE WITH THE STATIC VARIABLE AND RECURSE THROUGH THE LEFT SUBTREE 
            3.NOW AFTER RECURSION THE FUNCTION WILL RETURN TO THE CALLED FUNCTION
            4.NOW MATCH WITH THE STATIC VARIABLE AND ITERATE THROUGH THE RIGHT TREE.




THE CODE IS HERE: 

void top_view(node * root)
{
 static struct node* head=root;
     if(root->left != NULL)
        top_view(root->left);
     cout<< root->data<<" ";
  if(head==root){
   while(head->right){
       cout<< head->right->data<<" ";
       head=head->right;
   }
   }  
  }

3 comments: