#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct BiNode
{
int data;
struct BiNode * lchild;
struct BiNode * rchild;
}BiNode,*Bitree;//二叉树节点的定义
Bitree Create_BST(int a[],int n)
{
int i;
Bitree root,p,q,s;
root=(BiNode *)malloc(sizeof(BiNode));
root->lchild=NULL;
root->rchild=NULL;
root->data=a[0];
//p=root;
for(i=1;i<n;i++)
{
p=root;
s=(BiNode *)malloc(sizeof(BiNode));
s->data=a[i];
s->rchild=NULL;
s->lchild=NULL;
while(p!=NULL)
{
q=p;
if(s->data<p->data)
p=p->lchild;
else if(s->data>=p->data)
p=p->rchild;
}
if(s->data<q->data)
q->lchild=s;
else q->rchild=s;
}//创建一个二叉排序树
return root;
}
void PostOrder(Bitree T)
{
BiNode *p=T;
if(p->lchild!=NULL)
PostOrder(p->lchild);
if(p->rchild!=NULL)
PostOrder(p->rchild);
printf("%d ",p->data);
}//递归输出二叉树序列
int main()
{
Bitree T;
int a[50];
int i=0;
scanf("%d",&a[0]);
while(getchar()!='\n')
{
i++;
scanf("%d",&a[i]);
}
T=Create_BST(a,i+1);
PostOrder(T);
//free
return 0;
}
BST的生成,后续输出
最新推荐文章于 2025-03-26 20:35:18 发布