class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
queue<TreeNode*> r; //定义一个队列储存树节点
vector<vector<int>> res; //定义一个容器储存多个储存整数的容器
if(root==NULL) //如果根节点为空返回res容器
{
return res;
}
r.push(root); //根节点入队
while(!r.empty()) //队列为空时,跳出循环返回res容器
{
vector<int> x; //定义一个容器x储存二叉树每一层的节点的值
int len=r.size(); //定义len存储队列长度,每一次都是当前所在二叉树层次所有节点的个数
for(int i=0;i<len;i++) //for循环遍历
{
TreeNode* node=r.front(); //定义一个指针暂时存放根节点,以便使它的孩子节点入队
r.pop(); //根节点出队
x.push_back(node->val); //访问根节点的值便存放在res容器中
if(node->left!=NULL) r.push(node->left); //根节点的左孩子如果不为空就入队
if(node->right!=NULL) r.push(node->right); //根节点的右孩子如果不为空就入队
}
res.push_back(x); //将x加入到res容器中
}
return res; //返回res容器
}
};
二叉树层次遍历
最新推荐文章于 2023-10-06 09:34:51 发布