关于c语言树的建立及操作

来源:百度知道 编辑:UC知道 时间:2024/05/26 12:02:02
如何建立一个二叉树 并按照先序遍历输出所有节点的序列?

//---------------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>

typedef struct np{
int dat;
struct np *left,*right;
} node;
node *create(void)
{
return (malloc(sizeof(node)));
}
node *t(node *a,int d)/*建立二叉树*/
{
if (a==NULL) {
a=create();
a->left =a->right =NULL;
a->dat=d;
}
else if (d>=a->dat) {
a->right =t(a->right,d);
}
else if (d<a->dat) {
a->left =t(a->left ,d);
}
return a;
}
void prt(node *r)
{
if (r!=NULL) {
printf("%d ",r->dat );
prt(r->left );
prt(r->right );
}
}

int main(void)
{
node *bst=NULL;
int i;

while (scanf("%d",&i),i!=-1111){ /*从键盘输入整数,以-1111结束输入*/
bst=t(bst,i); /*生成二叉排