本文已参与「新人创作礼」活动,一起开启掘金创作之路。
问题
实现二叉树的层序遍历。
思路
通过一个队列,每次当前层的节点 pop 出,然后将当前层的孩子节点 push 队列,从而将每层元素 push 到数组中。
代码实现
/**
* 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) {
// write code here
vector<vector<int>> res;
queue<TreeNode*> que;
if (root) que.push(root);
while (!que.empty())
{
vector<int> tmp;
int size = que.size();
for (int i = 0; i < size; i++)
{
TreeNode* node = que.front();
que.pop();
tmp.push_back(node->val);
if (node->left) que.push(node->left);
if (node->right) que.push(node->right);
}
res.push_back(tmp);
}
return res;
}
};