您的位置:首页 > 其它

二叉树的层序遍历(levelordertraverse)

2016-03-12 11:10 225 查看

数据结构关于二叉树的遍历还有一种层序遍历,按层次依次输出元素。最上层最先输出,同层中最左最先输出,使用队列这一结构来实现:

int levelOrderTraverse(IDTree *pTree)
{
if( pTree == NULL)
{
return -1;
}
std::vector<IDTree *> vec;
vec.push_back(pTree);
size_t cur = 0;
size_t end = 1;
while(cur < vec.size())
{
end = vec.size();
while(cur < end)
{
cout << vec[cur]->val << endl;
if(vec[cur]->pLef != NULL)
{
vec.push_back(vec[cur]->pLef);
}
if(vec[cur]->pRig != NULL)
{
vec.push_back(vec[cur]->pRig);
}
++cur;
}
}
return 0;
}

 外层循环是要获得当前队列中新的尾指针,而内层循环则是对新进队列的元素依次输出,并且按先后将结点对应的子树进入队列中。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: