面试题23从上到下打印二叉树+queue操作

//本题思路就是层次遍历二叉树,使用一个队列来模拟过程

/*
struct TreeNode {
	int val;
	struct TreeNode *left;
	struct TreeNode *right;
	TreeNode(int x) :
			val(x), left(NULL), right(NULL) {
	}
};*/

class Solution {
public:
  vector<int> PrintFromTopToBottom(TreeNode* root) {
	vector<int> results;
	if(root==nullptr)
		return results;
	queue<TreeNode*> tmpQue;		
	tmpQue.push(root);
	while(!tmpQue.empty()){
		TreeNode* p = tmpQue.front();			
		tmpQue.pop();
		results.push_back(p->val);
		if(p->left!=nullptr)
			tmpQue.push(p->left);
		if(p->right!=nullptr)
			tmpQue.push(p->right);
			
	}
	return results;
  }
};

  

 

C++ stl队列Queue用法介绍:删除,插入等操作代码举例

 

queue 的基本操作举例如下:

queue入队,如例:q.push(x); 将x 接到队列的末端。

queue出队,如例:q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。

访问queue队首元素,如例:q.front(),即最早被压入队列的元素。

访问queue队尾元素,如例:q.back(),即最后被压入队列的元素。

判断queue队列空,如例:q.empty(),当队列空时,返回true。

访问队列中的元素个数,如例:q.size()

queue的初始化和stack的初始化都不能直接初始化,需要使用push操作进行初始化。

 

posted @ 2017-05-10 23:24  zqlucky  阅读(414)  评论(0编辑  收藏  举报