题目描述
给你二叉树的根节点 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;}
};