#include<iostream>
using namespace std;
typedef struct Node
{
int value;
struct Node*left;
struct Node*right;
};
vector<vector<int>>levelOrder(Node*root)
{
vector<vector<int>> vec;
if(root==NULL)
{
return vec;
}
queue<Node*> qu;
qu.push(root);
while(!qu.empty())
{
int size=qu.size();//队列中的元素
vector<Node*>vec_tmp;//容器,元素类为Node*
while(size--)
{
Node* tmp=qu.front();//将队首元素放到临时变量中
qu.pop();//队列出队
vec_tmp.push_back(tmp->val);//将出队的结点的值压入vec_tmp容器中
if(tmp->left!=NULL)
{
qu.push(tmp->left);
}
if(tmp->right!=NULL)
{
qu.push(tmp->right);//
}
}
vec.push_back(vec_tmp)
}
return vec;
}
int main()
{
return 0;
}
二叉树层次遍历思路:使用队列,先将二叉树压入栈中,创建变量存储队列的首元素即二叉树的根,将根节点出队,将临时变量的值放入vector容器中。然后判断左孩子是否为空,不为空则将左孩子入队。再判断有孩子是否为空,不为空,将右孩子入队。判断队列是否为空,不为空,将左孩子出队,将左孩子的值放入vec_tmp中,循环结束,将vec_tmp存入二维容器中,最后队列为空,则直接返回vec,二维容器(存储二叉树每一层遍历的数据)。