表达式树的创建与输出
来源:互联网 发布:sdr软件无线电 飞行 编辑:程序博客网 时间:2024/06/07 06:59
问题 K: 表达式树的创建与输出
时间限制: 1 Sec 内存限制: 128 MB
提交: 539 解决: 311
[提交][状态][讨论版]
题目描述
编一个程序,读入先序遍历字符串,根据此字符串建立一棵二叉树(以指针方式存储),请注意的是,我们保证该树一定是表达式树(见教材5.2 5.8)。
例如下面的先序遍历字符串:
+ 13 # # * 5 # # 9 # #
运算符只可能是加减乘除,数值为小于等于100,各结点用空格分开,其中“#”代表空树。
建立起此二叉树以后,再按要求输出二叉树。
输入
输入由多组测试数据组成。
每组数据包含一行字符串,即表达式树的先序遍历序列,字符串长度大于0且不超过100。
输出
对于每组数据,输出一行,内容是该表达式树的全括号表达式,见示例。
样例输入
+ 13 # # * 5 # # 9 # #
* + 13 # # 5 # # 9 # #
样例输出
(13+(5*9))
((13+5)*9)
#include<stdio.h>#include<string.h>typedef struct binode{ char data[4]; int h; int depth; struct binode *lchild,*rchild;}binode,*bitree;char d[100][100];int q=0,num1;void creatbitree(bitree &T,int y,int num){ if(d[q][0]=='#') {T=NULL;q++;} else { T=new binode; if(y==1) T->h=1; else T->h=0; T->depth=++num; strcpy(T->data,d[q++]); creatbitree(T->lchild,1,T->depth); creatbitree(T->rchild,0,T->depth); }}void travel(bitree T){ int i; if(T!=NULL) { if(T->data[0]=='+'||T->data[0]=='-'||T->data[0]=='*'||T->data[0]=='/') { printf("("); travel(T->lchild); printf("%s",T->data); travel(T->rchild); printf(")"); } else printf("%s",T->data); }}int ldepth(bitree T){ if(T==NULL) return 0; num1=ldepth(T->lchild); return num1+1;}int rdepth(bitree T){ if(T==NULL) return 0; num1=rdepth(T->rchild); return num1+1;}int main(){ char a[500]; bitree T; while(gets(a)!=NULL) { int i,j=0,k=0; q=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,2,0); travel(T); printf("\n"); }}
阅读全文
0 0
- 表达式树的创建与输出
- 单链表的创建与输出
- 双链表的创建与输出
- 数据结构的单链表创建与输出
- 链表的创建与输出
- 循环链表的创建与输出
- 数据结构有序表的创建与输出
- cout中表达式的先后执行顺序与输出顺序
- VC实现链表的创建与输出
- 输入/输出流 和 文件的创建与删除
- 邻接表的创建与输出(C语言)
- 二叉树的简单创建和输出
- cout输出中多个表达式的先后执行顺序与输出顺序
- 二叉树 创建与输出 递归法实现
- 输入表达式输出表达式的值
- 正则表达式的创建
- 输出分段函数的表达式
- 输出以二叉树表示的算术表达式
- IntelliJ中的main函数和System.out.println()快捷输入方式
- leetcode 515. Find Largest Value in Each Tree Row
- [Algorithm]Quick Select问题
- node 任务热加载
- 素数距离OJ
- 表达式树的创建与输出
- 后缀表达式求值
- Oracle第四章单行函数习题答案
- 使用okhttp下载一个apk并安装
- Java 垂直等腰直角三角形
- STM8L15X液晶初始化程序
- 交集
- 【JavaScript避免重命名的方法】
- 成绩排序