有序树c语言代码,使用标准C语言编写创建有序二叉树的算法

#include

#include

#define NULL 0

#define maxsize 100

#define LEN sizeof(struct student)

typedef struct student

{struct student *lchild,*rchild;

char data;

}*STU;

STU stree_creat(char *s,int k)

{STU p;

if(s[k]==' '||k>maxsize)

return NULL;

else

{p=(STU)malloc(LEN);

p->data=s[k];

p->lchild=stree_creat(s,2*k 1);

p->rchild=stree_creat(s,2*k 2);

return p;

}

}

void print(STU p)

{ STU h[maxsize]={NULL};

int top=0,base=0;

h[top]=p;

printf("The chengci order:

");

while(h[base]!=NULL)

{

printf("[%c]",h[base]->data);

h[ top]=h[base]->lchild;

h[ top]=h[base]->rchild;

base ;

}

printf("

Success。

。。。。。

!!!");

}

/*前序遍历*/

void Preorder(STU p)

{if(p)

{

printf("[%c]",p->data);

Preorder(p->lchild);

Preorder(p->rchild);

}

}

/*中序遍历*/

void Inorder(STU p)

{if(p)

{

Inorder(p->lchild);

printf("[%c]",p->data);

Inorder(p->rchild);

}

}

/*后序遍历*/

void Postorder(STU p)

{if(p)

{

Postorder(p->lchild);

Postorder(p->rchild);

printf("[%c]",p->data);

}

}

/*交换该二叉树中所有结点左右孩子的非递归算法*/

void conver(char a[],int m)

{int i,j,h=1,k=2;

char t;

for(i=1;i<=(int)(log(m 1) 1);i )

{for(j=0;j {t=a[h j];a[h j]=a[k-j];a[k-j]=t;}

h=2*h 1;

k=2*k 2;

}

}

main()

{STU root=NULL;

int i=0,j=0,h=0;

char a[maxsize]={' '};

clrscr();

/*用一个数组存放一连串的字符串*/

gets(a);

while(a!=' ')

i ;

/*建立二叉树*/

root=stree_creat(a,0);

printf("

");

/*输出数组中的内容*/

print(root);

/*前序遍历*/

printf("Preorder Traversal。

。。。。。。。

");

Preorder(root);

printf("

");

/*中序遍历*/

printf("

Inorder Traversal。

。。。。。。。

");

Inorder(root);

printf("

");

/*后序遍历*/

printf("

Postorder Traversal。

。。。。。。。

");

Postorder(root);。

全部

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值