diff --git a/Binary-Tree-Zigzag-Level-Order-Traversal.cpp b/Binary-Tree-Zigzag-Level-Order-Traversal.cpp new file mode 100644 index 0000000..33ed4d3 --- /dev/null +++ b/Binary-Tree-Zigzag-Level-Order-Traversal.cpp @@ -0,0 +1,64 @@ +/** + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode(int x) : val(x), left(NULL), right(NULL) {} + * }; + */ +class Solution { +public: + vector> zigzagLevelOrder(TreeNode* root) { + vector> finalvec; + int flag = 1; + TreeNode *t; + stacks1; + stacks2; + if(root==NULL) + return finalvec; + s1.push(root); + // vectortemp; + // temp.push_back(root->val); + // finalvec.push_back(temp); + while(!s1.empty() || !s2.empty()) + { + if(flag == 1) + { + vectortemp; + while(!s1.empty()) + { + t = s1.top(); + s1.pop(); + temp.push_back(t->val); + if(t->left) + s2.push(t->left); + if(t->right) + s2.push(t->right); + + } + finalvec.push_back(temp); + flag = 0; + } + else + { + vectortemp; + while(!s2.empty()) + { + t = s2.top(); + s2.pop(); + temp.push_back(t->val); + if(t->right) + s1.push(t->right); + if(t->left) + s1.push(t->left); + + } + finalvec.push_back(temp); + flag = 1; + } + } + + return finalvec; + } +};