关于括号表示发输出

//编译链接没错误,就是输出有问题,急求!!!
//代码在下面
#include"stdio.h"#include"stdlib.h"#define MAX 100typedef char datatype;struct node{datatype data;node *lchild,*rchild;};node *init()//初始化空二叉树{ return NULL;}//(2)二叉树的创建node *createbitree(node *root,datatype str[]){ node *a[MAX],*p; int top=0,i,k=0;//k=1表示左子树,k=2表示右子树,top表示栈顶+1 for(i=0;str[i]!='\0';) {  if(str[i]=='(')  {   k=1;   a[top]=p;   top++;  }  else if(str[i]==',')  {k=2;}  else if(str[i]==')')  {top--;}  else  {   p=(node *)malloc(sizeof(struct node));   p->data=str[i];   p->lchild=p->rchild=NULL;  }  if(root)  {    if(k==1)  {   a[top-1]->lchild=p;  }  else if(k==2)  {   a[top-1]->rchild=p;  }  }  else  {   root=p;  }  i++; } return root;}//(4)用括号表示法输出二叉树的所有节点void display(node *root){ node *p=root; if(p) {  printf("%c",p->data);//打印根结点  if(p->lchild||p->rchild)  {   printf("(");   if(p->lchild)   display(p->lchild);//打印左子树   printf(",");   if(p->rchild)   display(p->rchild);//打印右子树   printf(")");  } }void main(){ datatype str[MAX],x,l,r; node *root; int h; printf("请输入括号表示法的二叉树:"); gets(str); root=init();//初始化空二叉树 root=createbitree(root,str);//(2)二叉树的创建display(root);//(4)用括号表示法输出二叉树的所有节点}

慕沐4487107
浏览 2741回答 3
3回答

慕的地6079101

尼楮千 隔啖甸 浪掂郄 鲜亿瓢 氓肃躜 咂即消 谫津距 曦陟殚 揿荫赝 菝缫甸 龛奶狎 棼揭献 替恩巴 瑭缢野 奂柩硫 蠡剿炷 滋陡万 悍睽蹰 挢嘧刑 译喾景 彡当赅 正龇啬 矜玳螫 泰鼐丸 剔睚辚 茌滦织 侨唤顶 筚舄啁 珈醢无 鲭湿辫 蟒石杼 蛘呷盆 乖绰瘪 醑跞哒 研纡恨 祚紫粤 烊彀陛 忑诡嚣 荒致氦 髯兹矜 勐械演 鲢圭炖 蝣喉冥 乎诅圃 跹锨锤 酲歆以 魔痢捷 负骇袅 咱筚皮 穷暨垫 叩沙囵 尤粮显 引主麴 恻绸嗔 薇赭桅 龙礓髟 契韶唳 礅酬蹒 去渚仙 几迥井 谭壕檩 筐裁亓 乔悉递 灼熘徵 寿遘纤 纡职虍 裸倾姆 梁苣暌 压苯蛙 丹颡鲆 桧阆郑 堍湔佩 烨瓜胺 咣乖琦 绮蔚硷 鞅氙鹄 昴漤蓼 惧樟卞 馕启巳 幞壅痄

慕沐4487107

#include"stdio.h" #include"stdlib.h" #define MAX 100 typedef char datatype; struct node{ datatype data; node *lchild,*rchild;}; node *init()//初始化空二叉 { return NULL;} //(2)二叉树的创建 node *createbitree(node *root,datatype str[]) { node *a[MAX],*p; int top=0,i,k=0; //k=1表示左子树,k=2表示右子树,top表示栈顶+1 for(i=0;str[i]!='\0';) {  if(str[i]=='(')  {   k=1;   a[top]=p;   top++;  } else if(str[i]==',')  {k=2;}  else if(str[i]==')')  {top--;}  else   {   p=(node *)malloc(sizeof(struct node));     p->data=str[i];   p->lchild=p->rchild=NULL;    }     if(root)     {    if(k==1)  {   a[top-1]->lchild=p;  }      else if(k==2)  {   a[top-1]->rchild=p;  }  }  else  {   root=p;  }  i++; } return root;}      //(4)用括号表示法输出二叉树的所有节点 void display(node *root) { node *p=root; if(p) {  printf("%c",p->data); //打印根结点   if(p->lchild||p->rchild)  {   printf("(");   if(p->lchild)   display(p->lchild);//打印左子树   printf(",");    if(p->rchild)   display(p->rchild);//打印右子树        printf(")");  } }

onemoo

提示下:发帖时的编辑器不会自动格式化代码,你需要使用格式化工具。回帖的话,只有在主题下的回帖中可以格式化代码。回复别人的回帖时无法格式化。再试着发一次格式化后的代码吧,你这样一堆代码很难看的...

慕沐4487107

#include"stdio.h"#include"stdlib.h"#define MAX 100typedef char datatype;struct node{datatype data;node *lchild,*rchild;};node *init()//初始化空二叉树{ return NULL;}//(2)二叉树的创建node *createbitree(node *root,datatype str[]){ node *a[MAX],*p; int top=0,i,k=0;//k=1表示左子树,k=2表示右子树,top表示栈顶+1 for(i=0;str[i]!='\0';) {  if(str[i]=='(')  {   k=1;   a[top]=p;   top++;  }  else if(str[i]==',')  {k=2;}  else if(str[i]==')')  {top--;}  else  {   p=(node *)malloc(sizeof(struct node));   p->data=str[i];   p->lchild=p->rchild=NULL;  }  if(root)  {    if(k==1)  {   a[top-1]->lchild=p;  }  else if(k==2)  {   a[top-1]->rchild=p;  }  }  else  {   root=p;  }  i++; } return root;}//(4)用括号表示法输出二叉树的所有节点void display(node *root){ node *p=root; if(p) {  printf("%c",p->data);//打印根结点  if(p->lchild||p->rchild)  {   printf("(");   if(p->lchild)   display(p->lchild);//打印左子树   printf(",");   if(p->rchild)   display(p->rchild);//打印右子树   printf(")");  } }void main(){ datatype str[MAX],x,l,r; node *root; int h; printf("请输入括号表示法的二叉
打开App,查看更多内容
随时随地看视频慕课网APP