代码随想录 day15| 层序遍历
102.二叉树的层序遍历
解题思路:
层序遍历一个二叉树,就是从左到右一层层去遍历二叉树,和之前的都不一样。 需要借用一个辅助数据结构即队列实现,队列先进后出,符合一层层遍历的逻辑,而用栈先进后出适合模拟深度优先遍历也就是递归的逻辑。
然而 这种层序遍历方式就是图论中的广度优先遍历,只不过我们应用在二叉树上。
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector <vector <int>> ret;
if (!root) {
return ret;
}
queue <TreeNode*> q;
q.push(root);
while (!q.empty()) {
int currentLevelSize = q.size();
ret.push_back(vector <int> ());
for (int i = 1; i <= currentLevelSize; ++i) {
auto node = q.front(); q.pop();
ret.back().push_back(node->val);
if (node->left) q.push(node->left);
if (node->right) q.push(node->right);
}
}
return ret;
}
};