//二叉树的(二叉排序树)建立和先序遍历
#include<stdio.h>
#include<stdlib.h>
//-----------------------------------------------------------
typedef struct bnode
{
int data;
struct bnode *lchild,*rchild;
}btree;
//-----------------------------------------------------------
btree *insert_node(btree *root,int node)
{
btree* newpointer;
btree* currpointer;
btree* parentpointer;
newpointer = (btree *)malloc(sizeof(btree));
newpointer->data = node;
newpointer->lchild = NULL;
newpointer->rchild = NULL;
if(root == NULL)
{
return newpointer;
}
else
{
currpointer=root;
while(currpointer!=NULL)
{
parentpointer=currpointer;
if(currpointer->data>node)
{
currpointer = currpointer->lchild;
}
else
{
currpointer = currpointer->rchild;
}
}
if(parentpointer->data>node)
{
parentpointer->lchild = newpointer;
}
else
{
parentpointer->rchild = newpointer;
}
}
return root;
}
//-----------------------------------------------------------
btree *create_btree(int data[],int len)
{
int i;
btree *root=NULL;
for(i=0;i<len;i++)
{
root=insert_node(root,data[i]);
}
return root;
}
//-----------------------------------------------------------
void print_btree(btree *root)
{
if(root != NULL)
{
printf("%d",root->data);
}
if(root->lchild!=NULL||root->rchild!=NULL)
{
printf("(");
if(root->lchild !=NULL)
{
print_btree(root->lchild);
}
if(root->rchild !=NULL)
{
printf(",");
print_btree(root->rchild);
}
printf(")");
}
}
//-----------------------------------------------------------
void main()
{
btree *root=NULL;
//int value,index,
int nodelist[5]={5,1,2,8};
//printf("please input data(exit for 0):/n");
//index = 0;
//scanf("%d",&value);
/*
while(value)
{
nodelist[index] = value;
index++;
scanf("%d",&value);
}
*/
root = create_btree(nodelist,4);
print_btree(root);
}