#include <stdio.h>
#include <malloc.h>
typedef struct btnode
{
char ch;
struct btnode *lchild,*rchild;
}BTnode;
BTnode *Create()
{
BTnode *root,*p,*a[100];
int num;
char str;
int j=0;
printf("\n");
printf("请输入你要创建树结点的编号和值(请以0和#结束)\n");
printf("i,string\n");
scanf("%d,%c",&num,&str);
getchar();
while(num!=0 && str !='#')
{
p=(BTnode *)malloc(sizeof(BTnode));
p->ch=str;
p->lchild=p->rchild=NULL;
a[num]=p;
if(num==1)
root=p;
else
{
j=num/2;
if(num%2==0)
a[j]->lchild=p;
else
a[j]->rchild=p;
}
scanf("%d,%c",&num,&str);
getchar();
}
return root;
}
void Preorder(BTnode *p)//先根遍历
{
if(p)
{
printf("->%c",p->ch);
Preorder(p->lchild);
Preorder(p->rchild);
}
}
void Inorder(BTnode *p)//中根遍历
{
if(p)
{
Inorder(p->lchild);
printf("->%c",p->ch);
Inorder(p->rchild);
}
}
void Posorder(BTnode *p)//先根遍历
{
if(p)
{
Posorder(p->lchild);
Posorder(p->rchild);
printf("->%c",p->ch);
}
}
void main()
{
BTnode *head;
head=Create();
printf("先根遍历,结果为 :");
Preorder(head);
printf("\n");
printf("中根遍历,结果为 :");
Inorder(head);
printf("\n");
printf("后根遍历,结果为 :");
Posorder(head);
printf("\n");
}
创建二叉树` 和遍历二叉树`
但是输入创建的时候`` 只能依次输入 编号的值`` 那位师兄有方法`可以随机输入每个结点的内容?