现在的位置: 首页 > 综合 > 正文

螺旋遍历二叉树 Spiral-order traversal

2013年12月10日 ⁄ 综合 ⁄ 共 590字 ⁄ 字号 评论关闭

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

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

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

抱歉!评论已关闭.