// { Driver Code Starts
      #include <bits/stdc++.h>
      using namespace std;
      /* A binary tree node has data, pointer to left child
         and a pointer to right child */
      struct Node
      {
          int data;
          struct Node* left;
          struct Node* right;
      };
      // Utility function to create a new Tree Node
      Node* newNode(int val)
      {
          Node* temp = new Node;
          temp->data = val;
          temp->left = NULL;
          temp->right = NULL;
          return temp;
      }
      void levelOrder(struct Node* node);
      /* Helper function to test mirror(). Given a binary
         search tree, print out its data elements in
         increasing sorted order.*/
      void inOrder(struct Node* node)
      {
        if (node == NULL)
          return;
        inOrder(node->left);
        printf("%d ", node->data);
        inOrder(node->right);
      }
      // Function to Build Tree
      Node* buildTree(string str)
      {   
          // Corner Case
          if(str.length() == 0 || str[0] == 'N')
                  return NULL;
          // Creating vector of strings from input 
          // string after spliting by space
          vector<string> ip;
          istringstream iss(str);
          for(string str; iss >> str; )
              ip.push_back(str);
          // Create the root of the tree
          Node* root = newNode(stoi(ip[0]));
          // Push the root to the queue
          queue<Node*> queue;
          queue.push(root);
          // Starting from the second element
          int i = 1;
          while(!queue.empty() && i < ip.size()) {
              // Get and remove the front of the queue
              Node* currNode = queue.front();
              queue.pop();
              // Get the current node's value from the string
              string currVal = ip[i];
              // If the left child is not null
              if(currVal != "N") {
                  // Create the left child for the current node
                  currNode->left = newNode(stoi(currVal));
                  // Push it to the queue
                  queue.push(currNode->left);
              }
              // For the right child
              i++;
              if(i >= ip.size())
                  break;
              currVal = ip[i];
              // If the right child is not null
              if(currVal != "N") {
                  // Create the right child for the current node
                  currNode->right = newNode(stoi(currVal));
                  // Push it to the queue
                  queue.push(currNode->right);
              }
              i++;
          }
          return root;
      }
      /* Driver program to test size function*/
      int main()
      {
        int t;
        scanf("%d ",&t);
        while (t--)
        {
              string s;
      		getline(cin,s);
      		Node* root = buildTree(s);
              levelOrder(root);
              cout << endl;
        }
        return 0;
      }
      // } Driver Code Ends
      /* A binary tree Node
      struct Node
      {
          int data;
          struct Node* left;
          struct Node* right;
          Node(int x){
              data = x;
              left = right = NULL;
          }
      };
       */
       */
      //You are required to complete this method
      void levelOrder(Node* node)
      {
        queue<Node *>q;
        q.push(node);
        while(!q.empty()){
              Node *temp=q.front();
              q.pop();
              cout<<temp->data<<" ";
              if(temp->left)
                q.push(temp->left);
              if(temp->right)
                q.push(temp->right);
            }
      }
      
      Cpp language logo

      LVL_ORD_TRNSVSAL

      0

      0

      avatar
      virendrakgarg

      0 Comments

        Add Comment

        Log in to add a comment

        Codiga - All rights reserved 2022.