二叉树层序遍历
1. 使用到队列 先进先出 看书为准
C++队列queue模板类的定义在<queue>头文件中,queue 模板类需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的。C++队列queue是一种容器适配器,它给予程序员一种先进先出(FIFO)的数据结构。
C++队列Queue类成员函数如下:
back()返回最后一个元素
empty()如果队列空则返回真
front()返回第一个元素
pop()删除第一个元素
push()在末尾加入一个元素
size()返回队列中元素的个数
Queue 的基本操作举例如下:
queue入队,如例:q.push(x);将x 接到队列的末端。
queue出队,如例:q.pop();弹出队列的第一个元素,注意,并不会返回被弹出元素的值。
访问queue队首元素,如例:q.front(),即最早被压入队列的元素。
访问queue队尾元素,如例:q.back(),即最后被压入队列的元素。
判断queue队列空,如例:q.empty(),当队列空时,返回true。
访问队列中的元素个数,如例:q.size()。
/* 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> res; if(root==nullptr) return res; deque <TreeNode* > queueNode;//设置一个队列 存放指针 先进先出 queueNode.push_back(root); while(queueNode.size()) //队列为空 代表打印结束 退出 { TreeNode* pNode=queueNode.front(); queueNode.pop_front();//前面出
res.push_back(pNode->val); //代替打印
if(pNode->left)//左子树不为空树 queueNode.push_back(pNode->left); if(pNode->right)//左子树不为空树 queueNode.push_back(pNode->right); } return res; } };