二叉树的层序遍历(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; }
外层循环是要获得当前队列中新的尾指针,而内层循环则是对新进队列的元素依次输出,并且按先后将结点对应的子树进入队列中。
相关文章推荐
- 学习列表
- 一种异常处理的方法、装置和软件系统
- 隔离级别(Isolation Level)
- <问吧>调查问卷心得体会
- linux内核umount源代码分析
- fzu1977Pandora adventure【插头dp】
- ClassLoader加载原理
- “问吧”调查问卷的分析总结与感受
- 《More Effective C++》Rule7:千万不要重载 &&, ||, 和 ,操作符
- B. Grandfather Dovlet’s calculator
- 独立根CA服务器的建立及web证书的申请
- day03
- 【数据结构与算法】二叉树的层序遍历
- wifi 基础知识
- 软件系统工程
- 自定义Activity栈 管理Activity--ArrayList
- 单链表逆转
- VIM配置
- 对于大学4年的反思
- 【bzoj1076】[SCOI2008]奖励关 状压DP