层序遍历
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> res;
if(root == nullptr)
{
return res;
}
//使用一个队列来保存每一行节点
queue<TreeNode*> queue_tree;
if(root->left)
{
queue_tree.push(root->left);
}
if(root->right)
{
queue_tree.push(root->right);
}
vector<int> cen;
cen.push_back(root->val);
res.push_back(cen);
cen.clear();
while(queue_tree.size())
{
int len = queue_tree.size();
for(int i = 0; i < len; ++i)
{
TreeNode* p = queue_tree.front();
if(p->left)
{
queue_tree.push(p->left);
}
if(p->right)
{
queue_tree.push(p->right);
}
queue_tree.pop();
cen.push_back(p->val);
}
res.push_back(cen);
cen.clear();
}
return res;
}
本文介绍了一种使用队列实现的二叉树层序遍历算法,通过将每层节点依次加入队列并进行处理,最终得到按层划分的节点值列表。

710

被折叠的 条评论
为什么被折叠?



