输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印
2016-05-12 10:03
381 查看
题目:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
例如输入
8
/ /
6 10
// //
5 7 9 11
输出8 6 10 5 7 9 11。
例如输入
8
/ /
6 10
// //
5 7 9 11
输出8 6 10 5 7 9 11。
#include <iostream> #include <deque> using namespace std; struct BTree { BTree* pLeft; BTree* pRight; int value; }; void InsertBTree(BTree* &pRoot, int val) { if (!pRoot) { pRoot=new BTree; pRoot->pLeft=NULL; pRoot->pRight=NULL; pRoot->value=val; } else { if (val>pRoot->value) { InsertBTree(pRoot->pRight,val); } if (val<pRoot->value) { InsertBTree(pRoot->pLeft,val); } if (val==pRoot->value) { cout<<"repeated insertion."<<endl; } } } void VisitByLevel(BTree* pRoot) { if (!pRoot) { return; } deque<BTree*> BTDeque; BTDeque.push_back(pRoot); while (BTDeque.size()) { BTree* p=BTDeque.front(); cout<<p->value<<" "; BTDeque.pop_front(); if (p->pLeft) { BTDeque.push_back(p->pLeft); } if (p->pRight) { BTDeque.push_back(p->pRight); } } cout<<""<<endl; } int main() { BTree* pRoot=NULL; InsertBTree(pRoot,8); InsertBTree(pRoot,6); InsertBTree(pRoot,10); InsertBTree(pRoot,5); InsertBTree(pRoot,7); InsertBTree(pRoot,9); InsertBTree(pRoot,11); VisitByLevel(pRoot); return 0; }
相关文章推荐
- Android 开发判断用户是否安装微信和QQ并跳转过去
- 浅谈java中的堆栈
- 创业的第一百八十八天
- Runner之记计帐项目的典型用户和用户场景
- std::pair<MAP::iterator,bool>用法,可用来判断插入式否成功
- JS省市联动代码
- 玩家心理
- AFNetworking 3.0
- 我眼中的KMP
- 机器学习 周志华 读书笔记 习题1.2
- ABAP开发中的SMARTFORMS 参数
- MYSQL - ORDER BY & LIMIT
- URL编码与解码原理
- C语言中内存分配
- java之Timer类使用方法小例子
- dede调用自定义模型字段
- Android 内功心法(1.8)——android常用设计模式之访问者模式
- Android在标准linux基础上对休眠唤醒的实现
- 1、Java好的书籍
- android字体设置