螺旋遍历二叉树指的是,先从左往右层序打印第一层,然后从右往左层序打印第二层,再从左往右层序打印第三层,再从右往左层序打印第四层,。。。
思路:可以用两个栈来做。
struct Node{ int data; Node* left; Node* right; Node(int d, Node*l, Node*r):data(d), left(l), right(r){} }; void print_spiral_order(Node* root) { stack<Node*> sta1, sta2; sta1.push(root); while(!sta1.empty() || !sta2.empty() ){ while(!sta1.empty()) { cout<< sta1.top()->data; if(sta1.top()->left) sta2.push(sta1.top()->left); if(sta1.top()->right) sta2.push(sta1.top()->right); sta1.pop(); } while(!sta2.empty()) { cout<< sta2.top()->data; if(sta2.top()->left) sta1.push(sta2.top()->right); if(sta2.top()->right) sta1.push(sta2.top()->left); sta2.pop(); } } }