1.题目
给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)(代码在牛客网中执行通过)
2.思路
3.代码
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ class Solution { public: /** * * @param root TreeNode类 * @return int整型vector<vector<>> */ vector<vector<int> > levelOrder(TreeNode* root) { // 创建一个容器存放所有的要输出的list集合 vector<vector<int>> result; if (!root){ return result; } // 用于保存将要被弹出去的节点 TreeNode* cur = root; // 将即将弹出的节点保存到一个新的容器 vector<int> vtemp; // 创建一个队列进行节点的输入输出 queue<TreeNode*> lis; queue<int> lev; // 先将根节点存入队列 lis.push(root); lev.push(0); while(!lis.empty()){ int len = lis.size(); for(int i=0;i<len;i++){ // 先保存将弹出去的节点 cur = lis.front(); vtemp.push_back(cur->val); // 从左到右(队列的先进先出)弹出每一层的节点 lis.pop(); // 每弹出一个根节点则将他的左右孩子节点,保存到队列中来 if(cur->left){ lis.push(cur->left); } if(cur->right){ lis.push(cur->right); } } // 将每层的节点集合保存到,总的容器里面 result.push_back(vtemp); // 释放vtemp中的元素 vtemp.clear(); } return result; } };