Skip to main content

Level-Order Travsal BST(Program)

Level-Order Travsal


CODE

👇

//Main File

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include "levelorder.h"  

  4. void main()
  5. {
  6.     NODE *root=NULL;
  7.     printf("\t>>First Create BST<<\n");
  8.     root = createbst(root); 
  9.     
  10. display(root);
  11.     
  12. printf("\n\n\t>>Level order traversal<<\t");
  13.     levelorder(root);
  14. }

//Header File
    1.   #define MAXSIZE 20
    2.     typedef struct node
    3.     {
    4.      int info;
    5.      struct node *left, *right;
    6.     }NODE;

    7.      //QUEUE FUNCTIONS
    8.     typedef struct
    9.     {
    10.      NODE *data[MAXSIZE];
    11.      int front, rear;
    12.     }QUEUE;

    13.     void initq(QUEUE *pq)
    14.     {
    15.      pq->front = pq->rear = -1;
    16.     }

    17.     void addq(QUEUE *pq, NODE *treenode)
    18.     {
    19.      pq->data[++pq->rear] = treenode;
    20.     }

    21.     NODE* removeq(QUEUE *pq)
    22.     {
    23.      return pq->data[++pq->front];
    24.     }

    25.     int isempty(QUEUE *pq)
    26.     {
    27.      return (pq->front == pq->rear);
    28.     }

    29.     int isfull(QUEUE *pq)
    30.     {
    31.      return(pq->rear == MAXSIZE-1);
    32.     }



    33.      //TREE FUNCTION
    34.     NODE * createbst(NODE *root)
    35.     {
    36.      NODE *newnode, *temp, *parent;
    37.      int i, n, num;
    38.      printf("\nHow many nodes you want to enter?\t");
    39.      scanf("%d", &n);
    40.      printf("Enter the %d elements:\t", n);
    41.      for(i=1; i<=n; i++)
    42.      {
    43.      newnode = (NODE*)malloc(sizeof (NODE));
    44.      scanf("%d", &num);
    45.      newnode->info=num;
    46.      newnode->left = newnode->right = NULL;
    47.      if(root == NULL)
    48.      {
    49.      root = newnode;
    50.      continue;
    51.      }
    52.      temp = root;
    53.      while(temp != NULL)
    54.      {
    55.      parent = temp;
    56.      if(num < temp->info)
    57.      temp = temp->left;
    58.      else
    59.      temp = temp->right;
    60.      }
    61.      if(num < parent->info)
    62.      parent->left = newnode;
    63.      else
    64.      parent->right = newnode;
    65.      }
    66.      return(root);
    67.     }

    68. //DISPLAY 
    69. void display(NODE *root)
    70. {
    71. NODE *temp=root;
    72. if(temp != NULL)
    73. {
    74. printf("\t%d",temp->info);
    75. display(temp->left);
    76. display(temp->right);
    77. }
    78. }

    79. //Level Order
    80.     void levelorder(NODE *root)
    81.     {
    82.      int i, level=0;
    83.      NODE *temp, *marker=NULL;
    84.      QUEUE q;
    85.      initq(&q);
    86.      addq(&q, root);
    87.      addq(&q, marker);
    88.      printf("\nLevel %d --->\t", level);
    89.      while(!isempty(&q))
    90.      {
    91.      temp = removeq(&q);
    92.      if(temp == marker)
    93.      {
    94.      level++;
    95.      if(!isempty(&q))
    96.      {
    97.      addq(&q, marker);
    98.      printf("\nLevel %d --->\t", level);
    99.      }
    100.      }
    101.      else
    102.      {
    103.      printf("%d\t", temp->info);
    104.      if(temp->left)
    105.      addq(&q, temp->left);
    106.      if(temp->right)
    107.      addq(&q, temp->right);
    108.      }
    109.      }
    110.      printf("\n\nTotal Level In BST:-\t%d",level);
    111.     }

                                                                                                                                                                                                                                                      //Output
                                                                                                                                                                                                                                                      /*
                                                                                                                                                                                                                                                              >>First Create BST<<

                                                                                                                                                                                                                                                      How many nodes you want to enter?       5
                                                                                                                                                                                                                                                      Enter the 5 elements:   10
                                                                                                                                                                                                                                                      65
                                                                                                                                                                                                                                                      39
                                                                                                                                                                                                                                                      42
                                                                                                                                                                                                                                                      91


                                                                                                                                                                                                                                                              >>Level order traversal<<
                                                                                                                                                                                                                                                      Level 0 --->10
                                                                                                                                                                                                                                                      Level 1 --->65
                                                                                                                                                                                                                                                      Level 2 --->39  91
                                                                                                                                                                                                                                                      Level 3 --->42

                                                                                                                                                                                                                                                      Total Level In BST:-  4
                                                                                                                                                                                                                                                      */

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         //ThE ProFessoR

                                                                                                                                                                                                                                                      Comments