Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void printLevelOrderZigZag(BinaryTree *root) {
- if(!root) return;
- stack<BinaryTree*> S;
- bool leftToRight = true;
- S.push(root);
- int nodesInCurrentLevel = 1;
- int nodesInNextLevel;
- while (!S.empty()) {
- nodesInNextLevel = 0;
- for(int i=0; i<nodesInCurrentLevel; ++i)
- {
- BinaryTree *currNode = S.top();
- S.pop();
- cout << currNode->data << " ";
- if(leftToRight)
- {
- if(currNode->left)
- {
- S.push(currNode->left);
- ++nodesInNextLevel;
- }
- if(currNode->right)
- {
- S.push(currNode->right);
- ++nodesInNextLevel;
- }
- }
- else
- {
- if(currNode->right)
- {
- S.push(currNode->right);
- ++nodesInNextLevel;
- }
- if(currNode->left)
- {
- S.push(currNode->left);
- ++nodesInNextLevel;
- }
- }
- }
- cout << endl;
- nodesInCurrentLevel = nodesInNextLevel;
- leftToRight = !leftToRight;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement