螺旋遍历二叉树 Spiral-order traversal

来源:互联网 发布:mac软件商店 编辑:程序博客网 时间:2024/06/07 00:01

螺旋遍历二叉树指的是,先从左往右层序打印第一层,然后从右往左层序打印第二层,再从左往右层序打印第三层,再从右往左层序打印第四层,。。。

思路:可以用两个栈来做。

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();}}}


原创粉丝点击