3 回答

TA貢獻(xiàn)3593條經(jīng)驗(yàn) 獲得超1個(gè)贊

TA貢獻(xiàn)11條經(jīng)驗(yàn) 獲得超1個(gè)贊
#include"stdio.h"
#include"stdlib.h"
#define MAX 100
typedef char datatype;
struct node{
datatype data;
node *lchild,*rchild;};
node *init()//初始化空二叉
{ return NULL;}
//(2)二叉樹(shù)的創(chuàng)建
node *createbitree(node *root,datatype str[])
{ node *a[MAX],*p;
int top=0,i,k=0;
//k=1表示左子樹(shù),k=2表示右子樹(shù),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)用括號(hào)表示法輸出二叉樹(shù)的所有節(jié)點(diǎn)
void display(node *root)
{ node *p=root;
if(p)
{? printf("%c",p->data);
//打印根結(jié)點(diǎn)??
if(p->lchild||p->rchild)?
{?? printf("(");?? if(p->lchild)?? display(p->lchild);//打印左子樹(shù)??
printf(",");
?? if(p->rchild)?? display(p->rchild);//打印右子樹(shù)????
?? printf(")");? } }

TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊
提示下:發(fā)帖時(shí)的編輯器不會(huì)自動(dòng)格式化代碼,你需要使用格式化工具。
回帖的話(huà),只有在主題下的回帖中可以格式化代碼?;貜?fù)別人的回帖時(shí)無(wú)法格式化。
再試著發(fā)一次格式化后的代碼吧,你這樣一堆代碼很難看的...

TA貢獻(xiàn)11條經(jīng)驗(yàn) 獲得超1個(gè)贊
#include"stdio.h"#include"stdlib.h"#define MAX 100typedef char datatype;struct node{datatype data;node *lchild,*rchild;};node *init()//初始化空二叉樹(shù){ return NULL;}//(2)二叉樹(shù)的創(chuàng)建node *createbitree(node *root,datatype str[]){ node *a[MAX],*p; int top=0,i,k=0;//k=1表示左子樹(shù),k=2表示右子樹(shù),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)用括號(hào)表示法輸出二叉樹(shù)的所有節(jié)點(diǎn)void display(node *root){ node *p=root; if(p) {? printf("%c",p->data);//打印根結(jié)點(diǎn)? if(p->lchild||p->rchild)? {?? printf("(");?? if(p->lchild)?? display(p->lchild);//打印左子樹(shù)?? printf(",");?? if(p->rchild)?? display(p->rchild);//打印右子樹(shù)?? printf(")");? } }void main(){ datatype str[MAX],x,l,r; node *root; int h; printf("請(qǐng)輸入括號(hào)表示法的二叉
- 3 回答
- 0 關(guān)注
- 2824 瀏覽
添加回答
舉報(bào)