指引网

当前位置: 主页 > 编程开发 > C >

二叉排序树的建立及中序遍历

来源:网络 作者:佚名 点击: 时间:2017-07-19 23:01
[摘要] 

#include<stdio.h>
#include<alloc.h>
#include<conio.h>
#define MAX 100
typedef struct tnode
{
int data;
struct tnode *lchild,*rchild;
}TNODE;

void create();
void insert(int );  /*插入结点*/
void inorder(TNODE *);  /*中序遍历*/

TNODE *root=NULL;

void main()
{
clrscr();
create();
inorder(root);
}

void inorder(TNODE *ptr)
{
if(ptr!=NULL)
  {
  inorder(
  ptr->lchild);
  printf("%d ",ptr->data);
  inorder(ptr->rchild);
  }
}

void create()
{
int n,i;
int k[MAX];
printf("please input the node number:");
scanf("%d",&n);
for(i=0;i<n;i++)
  scanf("%d",&k[i]);
for(i=0;i<n;i++)
  insert(k[i]);
}

void insert(int m)
{
TNODE *p1,*p2;
if(root==NULL)
   {
   root=(TNODE *)malloc(sizeof(TNODE));
   root->data=m;
   root->lchild=root->rchild=NULL;
   }
else
   {
    p1=root;
    while(m!=p1->data)
       {
        if((m<p1->data)&&(p1->lchild!=NULL))  p1=p1->lchild;
        else if((m>p1->data)&&(p1->rchild!=NULL))  p1=p1->rchild;
        else if((m<p1->data)&&(p1->lchild==NULL))
             {
             p2=(TNODE *)malloc(sizeof(TNODE));
             p2->data=m;
             p2->lchild=p2->rchild=NULL;
             p1->lchild=p2;
             return;
             }
        else if((m>p1->data)&&(p

<
------分隔线----------------------------