使用队列进行存储结点
void layerOrderTraveral(TreeNode *root)
{
if(!root)
{
return;
}
queueque;
que.push(root);
while(!que.empty())
{
TreeNode *temp=que.front();
cout<val<<" ";
que.pop();
if(temp->left)
{
que.push(temp->left);
}
if(temp->right)
{
que.push(temp->right);
}
}
}
层序建立二叉树
//使用层序遍历创建二叉树 void createLayerTree(TreeNode *&root,vectornums) { if(nums.empty()) { return; } int length=nums.size(); int index=0; queue que; //首先将根节点入队 if(nums[index]!=-1) { root->val=nums[index]; que.push(root); } while(!que.empty()) { TreeNode * temp=que.front(); index+=1; //当输入的值为null的时候,则左孩子为空 if(index>=length) { return; } if(nums[index]==NULL) { temp->left=nullptr; } //当输入的值不为-1的时候,左孩子赋值 else { temp->left=new TreeNode(nums[index]); que.push(temp->left); } //继续移动,寻找下一个的右节点 index+=1; if(index>=length) { return; } if(nums[index]==NULL) { temp->right=nullptr; } else { temp->right=new TreeNode(nums[index]); que.push(temp->right); } que.pop(); } }



