Advertisement
Guest User

Untitled

a guest
Jul 27th, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.62 KB | None | 0 0
  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <iostream>
  4. #include <queue>
  5.  
  6. using namespace std;
  7.  
  8.  
  9. typedef struct Node{
  10.     struct Node *left, *right;
  11.     int item;
  12. }Node;
  13.  
  14. Node *root = NULL;
  15.  
  16.  
  17. Node *createNode(int value){
  18.     Node *newNode = (Node*)malloc(sizeof(Node));
  19.  
  20.     if(newNode){ newNode->left = NULL, newNode->right = NULL, newNode->item = value;}
  21.     return newNode;
  22. }
  23.  
  24. void printLevels(Node *root){
  25.  
  26.     vector<Node*> q;
  27.  
  28.     q.push_back(root);
  29.     int currLevel = 0;
  30.     while(q.size()){
  31.         int N = q.size();
  32.         vector<Node*> q2;
  33.         for(int i=N - 1; i >= 0; --i){
  34.             Node *n = q[i];
  35.  
  36.             cout << n->item << " ";
  37.             if(currLevel % 2 == 0){
  38.                 if(n->right) q2.push_back(n->right);
  39.                 if(n->left) q2.push_back(n->left);
  40.             }
  41.             else{
  42.                 if(n->left) q2.push_back(n->left);
  43.                 if(n->right) q2.push_back(n->right);
  44.          }  
  45.         }
  46.         cout << endl;
  47.         ++currLevel;
  48.         q = q2;
  49.     }
  50.  
  51.  
  52. }
  53.  
  54. void insertNode(Node *node){
  55.  
  56.     Node **tmp = &root;
  57.  
  58.     while(*tmp){
  59.         if( (*tmp)->item > node->item){
  60.             tmp = &((*tmp)->left);
  61.         }
  62.         else if( (*tmp)->item < node->item){
  63.             tmp = &((*tmp)->right);
  64.         }
  65.     }
  66.     *tmp = node;
  67. }
  68.  
  69. int main(void){
  70.  
  71.     insertNode(createNode(10));
  72.     insertNode(createNode(3));
  73.     insertNode(createNode(12));
  74.     insertNode(createNode(2));
  75.     insertNode(createNode(4));
  76.     insertNode(createNode(11));
  77.     insertNode(createNode(14));
  78.  
  79.     printLevels(root);
  80.     return 0;
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement