//编译链接没错误,就是输出有问题,急求!!!
//代码在下面
#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)用括号表示法输出二叉树的所有节点}
慕的地6079101
慕沐4487107
onemoo
慕沐4487107
相关分类