c语言

include<stdio.h>

include<stdlib.h>

typedef struct node{
char data;
struct node lchild,rchild;
}bitnode;

//二叉树的构建
void createbintree(bitnode &b,char a[],int &n){
char c=a[n++];
if(c==';') return;
if(c!='#'){
b=(bitnode
)malloc(sizeof(bitnode));
b->data=c;
createbintree(b->lchild,a,n);
createbintree(b->rchild,a,n);
}
else b=NULL;
}

//二叉树的遍历
void preorder(bitnode *b){
if(b!=NULL){
printf("%c",b->data);
preorder(b->lchild);
preorder(b->rchild);
}
}

//广义表形式输出
void printbitnode(bitnode *b){
if(b!=NULL){
printf("%c",b->data);
if(b->lchild!=NULL||b->rchild!=NULL){
printf("(");
printbitnode(b->lchild);
printf(",");
printbitnode(b->rchild);
printf(")");
}
}
}

//主函数实现
main(){
bitnode *b;
char a[10];
//char a[]={'a','b','d','#','g','#','c','e','#','h','f',';'};
gets(a);
int n=0;
createbintree(b,a,n);
preorder(b);
printbitnode(b);
}

原文地址:https://www.cnblogs.com/javalv/p/10936412.html