力扣 hot100 Day42
102. 二叉树的层序遍历
给你二叉树的根节点 root
,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
//抄的
class Solution {
public:vector<vector<int>> levelOrder(TreeNode* root) {vector<vector<int>> result;if (!root) return result;queue<TreeNode*> q;q.push(root);while (!q.empty()) {int levelSize = q.size();vector<int> currentLevel; for (int i = 0; i < levelSize; ++i) {TreeNode* node = q.front();q.pop();currentLevel.push_back(node->val);if (node->left) q.push(node->left);if (node->right) q.push(node->right);} result.push_back(currentLevel);} return result;}
};
BFS,广度优先搜索,基本都是基于队列实现
逻辑很简单,队列里存放根节点,每出来一个根节点,就把根节点的左右节点push进去,先进先出,这样就实现了层序遍历
当然里面还有一些逻辑细节,需要维护一个levelsize记录每一层个数,用队列size循环记录即可,还需要记录每一层pop的vector,在一层遍历完push进result。