亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于括號表示發輸出

關于括號表示發輸出

慕沐4487107 2018-04-30 21:40:46
//编译链接没错误,就是输出有问题,急求!!! //代码在下面 #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)用括号表示法输出二叉树的所有节点}
查看完整描述

3 回答

?
慕沐4487107

TA貢獻11條經驗 獲得超1個贊

#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(")");? } }

查看完整回答
反對 回復 2018-05-01
  • 慕沐4487107
    慕沐4487107
    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)用括號表示法輸出二叉樹的所有節點 }
?
onemoo

TA貢獻883條經驗 獲得超454個贊

提示下:發帖時的編輯器不會自動格式化代碼,你需要使用格式化工具。

回帖的話,只有在主題下的回帖中可以格式化代碼?;貜蛣e人的回帖時無法格式化。

再試著發一次格式化后的代碼吧,你這樣一堆代碼很難看的...

查看完整回答
反對 回復 2018-04-30
?
慕沐4487107

TA貢獻11條經驗 獲得超1個贊

#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("請輸入括號表示法的二叉

查看完整回答
反對 回復 2018-04-30
  • 3 回答
  • 0 關注
  • 2847 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號