void ZigZag(struct node *root)
{
stack<node *> s1;
stack<node *> s2;
struct node *temp;
/*Put the first node into stack*/
s1.push(root);
while(1)
{
while(s1.size() > 0)
{
temp = s1.top();
s1.pop();
cout<<" "<<temp->data;
/*Put the data in left right fashion*/
if(temp->left)
s2.push(temp->left);
if(temp->right)
s2.push(temp->right);
}
while(s2.size() > 0)
{
temp = s2.top();
s2.pop();
cout<<" "<<temp->data;
/*REVERSE!!!Put the data in right left fashion*/
if(temp->left)
s1.push(temp->right);
if(temp->right)
s1.push(temp->left);
}
if(s2.size() == 0 && s1.size() == 0)
break;
}
}