3 回答
TA贡献3593条经验 获得超0个赞
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(")"); } }
TA贡献883条经验 获得超454个赞
提示下:发帖时的编辑器不会自动格式化代码,你需要使用格式化工具。
回帖的话,只有在主题下的回帖中可以格式化代码。回复别人的回帖时无法格式化。
再试着发一次格式化后的代码吧,你这样一堆代码很难看的...
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("请输入括号表示法的二叉
- 3 回答
- 0 关注
- 2740 浏览
添加回答
举报