二叉树层序遍历

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

 

posted @ 2019-08-21 18:21  高颖1995  阅读(192)  评论(0编辑  收藏  举报