数据结构实验之二叉树七:叶子问题
来源:互联网 发布:自己实现数据库 编辑:程序博客网 时间:2024/05/29 08:15
Problem Description
已知一个按先序输入的字符序列,如abd,,eg,,,cf,,,(其中,表示空结点)。请建立该二叉树并按从上到下从左到右的顺序输出该二叉树的所有叶子结点。
Input
输入数据有多行,每一行是一个长度小于50个字符的字符串。
Output
按从上到下从左到右的顺序输出二叉树的叶子结点。
Example Input
abd,,eg,,,cf,,,
xnl,,i,,u,,
Example Output
dfg
uli
因为要求输出叶子的顺序是从上到下,从左到右。所以需要层序遍历来存储每一个元素,再判断如果是叶子则输出。
#include <stdio.h>#include <stdlib.h>#include <iostream>#include <string.h>using namespace std;typedef char telemtype;typedef struct Binode{ telemtype data; struct Binode *lchild,*rchild;} Binode,*Bitree;char s[60];int i;Bitree creat(Bitree &T){ if(s[i++]==',') return NULL; else { T=new Binode; T->data=s[i-1]; T->lchild=creat(T->lchild); T->rchild=creat(T->rchild); } return T;}void found(Bitree T){ int i=0; int j=0; Bitree a[60]; a[j++]=T;//先把最开始的根存入 while(i<j) { if(a[i]) { if(!a[i]->lchild&&!a[i]->rchild)//如果a[i]是叶子则输出 cout<<a[i]->data; if(a[i]->lchild) a[j++]=a[i]->lchild;//不管是不是叶子都要存入此元素的左孩子和右孩子 if(a[i]->rchild) a[j++]=a[i]->rchild; } i++; }}int main(){ while(cin>>s) { i=0; Bitree T; T=creat(T); found(T); cout<<endl; }}
阅读全文
0 0
- 数据结构实验之二叉树七:叶子问题
- SDUT OJ 数据结构实验之二叉树七:叶子问题
- 数据结构实验之二叉树七:叶子问题
- 数据结构实验之二叉树七:叶子问题
- SDUT 3346 数据结构实验之二叉树七:叶子问题
- 数据结构实验之二叉树七:叶子问题
- 数据结构实验之二叉树七:叶子问题 (sdut OJ3346)
- 数据结构实验之二叉树七:叶子问题
- 数据结构实验之二叉树七:叶子问题
- 数据结构实验之二叉树七:叶子问题
- 3346数据结构实验之二叉树七:叶子问题
- 数据结构实验之二叉树七:叶子问题
- 数据结构实验之二叉树七:叶子问题
- 数据结构实验之二叉树七:叶子问题
- 数据结构实验之二叉树七:叶子问题
- 数据结构实验之二叉树七:叶子问题
- 数据结构实验之二叉树七:叶子问题
- 数据结构实验之二叉树七:叶子问题
- SDImageCache缓存图片例子
- 顺序表的插入与输出
- JavaScript实现简单的广告滚动条
- jQuery获取选中的radio值的方法
- Protocol Buffers的入门加实践
- 数据结构实验之二叉树七:叶子问题
- 数据库存储过程的一点积累
- hdfs2.6.2源码学习:Day2-DataNode启动流程分析
- 递归与非递归的比较
- 随想录(你所不知道的交叉编译器)
- 公告定向发布和全部发布两部分数据拼接思路
- 找工作的程序员应该这样优化简历【内附120套优质简历模板】
- 如何用一个栈实现队列?
- 蓝桥杯 基础练习 特殊回文数