目录
题目描述
题目解析
题目答案
题目所用知识点
最后
题目描述
给你二叉树的根节点
root
,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
题目解析
使用队列来暂存每一层的节点,通过读取队列中的节点来遍历它的下一层节点。每一层节点的个数由levelSize来确定,以循环的形式依次遍历。当每次levelSize减为0时,此时queue中只剩余下一层的节点,据此重新赋值levelSize,当queue不为空时依次循环遍历。
题目答案
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> vv;
if (root == nullptr)
{
return vv;
}
int levelSize = 1;
queue<TreeNode*> qu;
qu.push(root);
while (!qu.empty()) {
vector<int> v;
while (levelSize--) {
TreeNode* tmp = qu.front();
qu.pop();
v.push_back(tmp->val);
if (tmp->left != nullptr) {
qu.push(tmp->left);
}
if (tmp->right != nullptr) {
qu.push(tmp->right);
}
}
levelSize = qu.size();
vv.push_back(v);
}
return vv;
}
};
题目所用知识点
queue常用接口
vector常用接口