题目描述
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
题目分析
- 题目中要求层序遍历二叉树,即二叉树的广度优先搜索(BFS)。BFS一般使用队列的先入先出特性实现;
- 对于每一层的处理,将本层全部节点存入一个临时数组里,并将下一层全部的节点存入队列,遍历完本层后,将临时数组中的数据加入到返回的容器中。循环执行该操作,直至结束。
Code
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
queue<TreeNode*> que_node;
if (nullptr != root) que_node.push(root);
vector<vector<int>> ans;
while (!que_node.empty()) {
vector<int> temp;
for (int i = que_node.size(); i > 0; --i) {
root = que_node.front();
que_node.pop();
temp.emplace_back(root->val);
if (nullptr != root->left) {
que_node.push(root->left);
}
if (nullptr != root->right) {
que_node.push(root->right);
}
}
ans.emplace_back(move(temp));
}
return ans;
}
};