Advertisement
Guest User

Untitled

a guest
Jul 27th, 2017
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.65 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.     queue<Node*> q;
  27.  
  28.     q.push(root);
  29.     int currLevel = 0;
  30.     while(q.size()){
  31.         int N = q.size();
  32.         vector<Node*> q2;
  33.         for(int i= 0; i < N; ++i){
  34.             Node *n = q.front(); q.pop();
  35.             q2.push_back(n);
  36.             if (n->left) q.push(n->left);
  37.             if (n->right) q.push(n->right);  
  38.         }
  39.         if (currLevel % 2 == 0) {
  40.             for (int i = q2.size() - 1; i >= 0; --i)
  41.                 cout << q2[i]->item << " ";
  42.         } else {
  43.             for (int i = 0; i < (int)q2.size(); ++i)
  44.                 cout << q2[i]->item << " ";
  45.         }
  46.         cout << endl;
  47.         ++currLevel;
  48.     }
  49.  
  50.  
  51. }
  52.  
  53. void insertNode(Node *node){
  54.  
  55.     Node **tmp = &root;
  56.  
  57.     while(*tmp){
  58.         if( (*tmp)->item > node->item){
  59.             tmp = &((*tmp)->left);
  60.         }
  61.         else if( (*tmp)->item < node->item){
  62.             tmp = &((*tmp)->right);
  63.         }
  64.     }
  65.     *tmp = node;
  66. }
  67.  
  68. int main(void){
  69.  
  70.     insertNode(createNode(10));
  71.     insertNode(createNode(3));
  72.     insertNode(createNode(12));
  73.     insertNode(createNode(2));
  74.     insertNode(createNode(4));
  75.     insertNode(createNode(11));
  76.     insertNode(createNode(14));
  77.  
  78.     printLevels(root);
  79.     return 0;
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement