注册 登录
编程论坛 数据结构与算法

关于二叉排序树的创建查找和插入的问题

guoyouy 发布于 2013-11-30 21:11, 538 次点击
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>

typedef struct BTnode{
    int data;
    struct BTnode *lchild,*rchild;
}BTNODE,*PBTNODE;

PBTNODE insert(PBTNODE T,PBTNODE S);
PBTNODE create(PBTNODE T);
void inordertraverse_BTree(PBTNODE T);

int main (void)
{   PBTNODE T,S;
    T=S=NULL;
    T=create(T);
    printf("二叉排序树遍历");
    inordertraverse_BTree(T);
    return 0;
}

PBTNODE insert(PBTNODE T,PBTNODE S)
{    if(T==NULL)
    { T=S;
      return T;
    }
     else if((T->data)<(S->data))
     insert(T->rchild,S);
     else
     insert(T->lchild,S);
}

PBTNODE create(PBTNODE T)
{  PBTNODE S;
   int key,n,i;
   printf("请输入个数:");
   scanf("%d",&n);
   printf("请输入数字:");
   for(i=1;i<=n;i++)
   {
     S=(BTNODE*)malloc(sizeof(BTNODE));     
     scanf("%d",&key);
     S->data=key;
     S->lchild=S->rchild=NULL;
     T=insert(T,S);
   }
   return T;
}

void inordertraverse_BTree(PBTNODE T){
  if(NULL!=T)
  {   if(NULL!=T->lchild)
  {  inordertraverse_BTree(T->lchild);}
          printf("%d\n",T->data);
         if(NULL!=T->rchild)
         {  inordertraverse_BTree(T->rchild);
         }
  }   
}
1 回复
#2
yuccn2013-12-02 09:50
这算是show代码吗
1