原题链接:102. 二叉树的层序遍历
以下代码为模板,需要层序遍历时都可以使用该模板进行代码更改
全代码:
cpp
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
//创建一个TreeNode* 队列用于存储树中的每层结点元素
queue<TreeNode*> que;
//如果树不为空,则将树以及树的全部结点push进que中
if(root != NULL) que.push(root);
//创建二维容器用于存放层序遍历的值
vector<vector<int>> result;
while(!que.empty())
{
//记录下当前层中有多少个结点元素
int size = que.size();
//创建容器用于存放当前层所有结点的值
vector<int> vec;
for(int i = 0; i < size;i++)
{//用于遍历队列内存储的结点元素
//存储队列头元素
TreeNode* node = que.front();
//将头元素弹出
que.pop();
//将头元素的值push到vec内
vec.push_back(node ->val);
//将子树的左右结点push进队列内,以下次备用
if(node ->left) que.push(node ->left);
if(node ->right) que.push(node ->right);
}
result.push_back(vec);
}
return result;
}
};