按层次遍历二叉树
2015-06-20 23:59
316 查看
题目描述:
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
思路:
根结点入队,然后循环判断队列是否为空,不为空则出队列,然后判断出队列的结点是否含有左右子结点,有的话则左右子结点分别进队列,直到队列为空
实现代码如下:
测试代码以及运行结果:
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
思路:
根结点入队,然后循环判断队列是否为空,不为空则出队列,然后判断出队列的结点是否含有左右子结点,有的话则左右子结点分别进队列,直到队列为空
实现代码如下:
#include<iostream> #include<queue> using namespace std; struct treenode { char data; treenode *lchild; treenode *rchild; }; //先序创建二叉树 treenode *init() { char data; cout<<"please inpur a number:(#代表NULL)"<<endl; cin>>data; if(data=='#') return NULL; treenode *head=new treenode; head->data=data; head->lchild=init(); head->rchild=init(); return head; } //按层次打印二叉树 void print(treenode *head) { queue<treenode *>myque; if(head) { myque.push(head); } while(!myque.empty()) { //获得队列头的数据并打印 treenode *temp=myque.front(); cout<<temp->data<<" "; myque.pop(); if(temp->lchild) myque.push(temp->lchild); if(temp->rchild) myque.push(temp->rchild); } }
测试代码以及运行结果:
int main() { treenode *head=init(); print(head); return 0; }
相关文章推荐
- Codeforces Round #308 (Div. 2)
- SCU 4440
- SCU 4440 分类: ACM 2015-06-20 23:58 16人阅读 评论(0) 收藏
- java笔记25 File类、递归、Properties
- iOS图片拉伸技巧
- 2015第25周六
- 读后感
- 小白的柳州麻将黑科技.Part1 = 你不知道的门清
- Cygwin中使用ncurses库
- VS高亮显示无扩展名源码文件
- 为什么基类中的析构函数要声明为虚析构函数?
- Fragment管理的工具类
- 最大自序和问题
- java基础—IO流——将一些字符写入到指定硬盘上的目录中去:
- 最大自序和问题
- python3.3:文本文件读取、处理及保存。小练习
- fatal error C1189: #error : missing -D__STDC_CONSTANT_MACROS / #define __STDC_CONSTANT_MACROS
- Struts2获取Web容器资源的方式 访问request,session
- 2015062010 - 英雄
- 运行及总结