Advertisement
Guest User

Untitled

a guest
Jun 12th, 2011
372
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.25 KB | None | 0 0
  1. void printLevelOrderZigZag(BinaryTree *root) {  
  2.    if(!root) return;
  3.    stack<BinaryTree*> S;  
  4.    bool leftToRight = true;  
  5.    S.push(root);  
  6.    int nodesInCurrentLevel = 1;
  7.    int nodesInNextLevel;
  8.    while (!S.empty()) {    
  9.       nodesInNextLevel = 0;
  10.       for(int i=0; i<nodesInCurrentLevel; ++i)
  11.       {
  12.           BinaryTree *currNode = S.top();
  13.           S.pop();
  14.           cout << currNode->data << " ";
  15.           if(leftToRight)
  16.           {
  17.               if(currNode->left)
  18.               {
  19.                  S.push(currNode->left);
  20.                  ++nodesInNextLevel;
  21.               }
  22.               if(currNode->right)
  23.               {
  24.                  S.push(currNode->right);
  25.                  ++nodesInNextLevel;
  26.               }
  27.           }
  28.           else
  29.           {
  30.               if(currNode->right)
  31.               {
  32.                  S.push(currNode->right);
  33.                  ++nodesInNextLevel;
  34.               }
  35.               if(currNode->left)
  36.               {
  37.                  S.push(currNode->left);
  38.                  ++nodesInNextLevel;
  39.               }
  40.           }
  41.       }
  42.       cout << endl;
  43.       nodesInCurrentLevel = nodesInNextLevel;
  44.       leftToRight = !leftToRight;
  45.    }
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement