建立一个队列,存储二叉树的节点,队列中的元素数即为当前层的节点数
/**
* 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) {
vector<vector<int>> res;
if(!root) return res;
queue<TreeNode* > q;
auto p = root;
q.push(p);
while(q.size()) {
int size = q.size();// 记录当前层的二叉树节点数
vector<int> ans; // 建立一个数组,存储每一层二叉树中的节点的值
while(size) {
auto t = q.front(); // 取出队头元素,然后判断其有无左右节点,有的话进入队列
q.pop();
size--;
ans.push_back(t->val);
if(t->left)
q.push(t->left);
if(t->right)
q.push(t->right);
}
res.push_back(ans); // 将一层的节点的值进入res
}
return res;
}
};