二叉树的创建和文本显示
来源:互联网 发布:千牛mac版什么时候出 编辑:程序博客网 时间:2024/05/16 14:07
问题 J: 二叉树的创建和文本显示
时间限制: 1 Sec 内存限制: 128 MB
提交: 604 解决: 268
[提交][状态][讨论版]
题目描述
编一个程序,读入先序遍历字符串,根据此字符串建立一棵二叉树(以指针方式存储)。
例如如下的先序遍历字符串:
A ST C # # D 10 # G # # F # # #
各结点数据(长度不超过3),用空格分开,其中“#”代表空树。
建立起此二叉树以后,再按要求输出二叉树。
输入
输入由多组测试数据组成。
每组数据包含一行字符串,即二叉树的先序遍历,字符串长度大于0且不超过100。
输出
对于每组数据,显示对应的二叉树,然后再输出一空行。输出形式相当于常规树形左旋90度。见样例。 注意二叉树的每一层缩进为4,每一行行尾没有空格符号。
样例输入
A ST C # # D 10 # G # # F # # #
4 2 1 # # 3 # # 5 # 6 # #
样例输出
A
F
D
G
10
ST
C
65
4
3
2
1
#include<stdio.h>#include<string.h>#include<stdlib.h>typedef struct Binode{ char data[4]; int h; int depth; struct Binode *lchild,*rchild;}Binode,*Bitree;int p,q=0,num;int c[200];char b[100][100],d[100][100];int x[100];void travel(Bitree &T){ if(T!=NULL) { travel(T->rchild); //printf("%s\n",T->data); T->h=++p; //printf("%d \n",T->h); c[T->h]=T->depth; strcpy(b[T->h],T->data); //puts(b[T->h]); travel(T->lchild); }}void creatbitree(Bitree &T,int num){ //printf("q=%d\n",q); if(d[q][0]=='#') {T=NULL;q++;} else { T=new Binode; strcpy(T->data,d[q++]); //printf("%s ",T->data); T->depth=++num; // printf("t->depth=%d\n",T->depth); creatbitree(T->lchild,T->depth); creatbitree(T->rchild,T->depth); }}void print(int i){ int j,l; for(j=1;j<=4*(c[i]-1);j++) { printf(" "); } //printf("c[i]=%d\n",c[i]); printf("%s\n",b[i]);}int main(){ char a[500]; Bitree T; while(gets(a)!=NULL) { memset(c,0,sizeof(int )*100); int i,j=0,k=0;q=0; num=0;p=0; for(i=0;a[i]!='\0';i++) { if(a[i]!=' ') d[j][k++]=a[i]; else { d[j][k++]='\0'; //puts(d[j]); k=0; j++; } } d[j++][k++]='\0'; //printf("%d\n",j); creatbitree(T,0); travel(T); for(i=1;i<=p;i++) print(i); printf("\n"); }}
阅读全文
0 0
- 二叉树的创建和文本显示
- 问题 J: 二叉树的创建和文本显示
- listview一起显示图片和文本的 源代码
- GridView实现图片和文本的简单显示一
- GridView实现图片和文本的简单显示二
- opencv鼠标操作cvSetMouseCallback和文本显示cvPutText的总结
- CSS3动画和文本的溢出显示省略号
- 怎么混合显示图片和文本
- cxGrid单元格内显示图片和文本
- ListView用SimpleAdapter显示图片和文本
- 智慧北京:新闻list页面点的添加和文本显示
- 二叉树的创建
- 二叉树的创建
- 二叉树的创建。
- 二叉树的创建
- 二叉树的创建
- 二叉树的创建
- 二叉树的创建
- CentOS 7 64bit下安装并初始化mysql 5.7 完整过程
- 大爱线性表
- 百度地图SDK 配置问题
- Windows10 安装Ubuntu子系统,解决从应用商店下载慢的问题。
- 文件以及DB同步方案选择
- 二叉树的创建和文本显示
- js open打开新窗口操作父窗口
- mysql主从复制
- intellij idea jrebel获取免费激活码
- js小知识
- Rxjava1 是否要升级为Rxjava 2?
- React-navigation之TabNavigation
- 中缀表达式转后缀表达式
- 表达式树的值