| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 473 人关注过本帖, 1 人收藏
标题:二叉搜索树问题,兄弟们,帮帮忙,看看到底哪错了,感激不尽。。
只看楼主 加入收藏
delmiss
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-11-14
收藏(1)
 问题点数:0 回复次数:0 
二叉搜索树问题,兄弟们,帮帮忙,看看到底哪错了,感激不尽。。
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
 int data;//节点信息
 struct node *lchild;//左孩子
 struct node *rchild;//右孩子
 }bitnode;

void cre(bitnode **w);
bitnode *InsertBST(bitnode *b,int m);
void zhongxu(bitnode *T);//中序遍历
void del(bitnode *b,int m);

void  cre(bitnode **w)
{
 
 int n,i;
 int a[10];
 printf("Enter the node of number: ");
 scanf("%d",&n);
 
 for(i=0;i<n;i++){    //输入树的结点个数
  printf("Enter the %d integer: ",i+1);
  scanf("%d",&a[i]);
  if(*w==NULL)
    *w=InsertBST(*w,a[i]);
  else
    InsertBST(*w,a[i]);
 }
  
}
bitnode *InsertBST(bitnode *b,int m)
{
 bitnode *p;
 if(b==NULL)
 {
  b=(bitnode *)malloc(sizeof(bitnode));
  b->data=m;
  b->lchild=b->rchild=NULL;
  return b;
 }
 else
 {
  if(m<b->data)
  {
   if(b->lchild!=NULL && m>b->lchild->data)
   {
    p=(bitnode *)malloc(sizeof(bitnode));
    p->data=m;
    p->rchild=NULL;
    p->lchild=b->lchild;
    b->lchild=p;
   }
   else
       InsertBST(b->lchild,m);
  }
  else if(m>b->data)
  {
   if(b->rchild!=NULL && m<b->rchild->data)
   {
    p=(bitnode *)malloc(sizeof(bitnode));
    p->data=m;
    p->lchild=NULL;
    p->rchild=b->rchild;
    b->rchild=p;
   }
   else
       InsertBST(b->rchild,m);
  }
 
 }
}

void zhongxu(bitnode *T)//中序遍历
{
 if(T!=NULL)
 {
   zhongxu(T->lchild);
   printf("%d ",T->data);
   zhongxu(T->rchild);
 }
}

void del(bitnode *b,int m)
{
 bitnode *q,*s;
 if(b->data==m){
  q=b;
  s=q->lchild;
  while(s->rchild){
   q=s;
   s=s->rchild;
  }
  b->data=s->data;
  if(q!=b)
   q->rchild=s->lchild;
  else
   q->lchild=s->lchild;
  free(s);
 }
 else
 {
  if(m<b->data)
    del(b->lchild,m);
  else if(m>b->data)
    del(b->rchild,m);
  else
   printf("No Found! ");
 }
}

main()
{
 bitnode *b=NULL;
 int m,x;
 printf("*******************************\n\n");
 printf("***********0:退出程序**********\n");
 printf("***********1:建立结构**********\n");
 printf("***********2:插入整数**********\n");
 printf("***********3:中序输出**********\n");
 printf("***********4:删除节点**********\n");
 do{
 // printf("\n\n");
  printf("请选择: ");
  scanf("%d",&x);
  switch(x){
   case 0:
    break;
   case 1:
    cre(&b);break;
   case 2:
    printf("请输入整数: ");
    scanf("%d",&m);
    InsertBST(b,m);
    break;
   case 3:
    zhongxu(b);
    break;
   case 4:
       printf("Enter the integer: ");
       scanf("%d",&m);
        del(b,m);
        break;
   default:
    printf("输入错误!");
    break;
  }
 }while(x!=0);
 return 0;
}

搜索更多相关主题的帖子: include number Enter 信息 
2013-11-14 18:48
快速回复:二叉搜索树问题,兄弟们,帮帮忙,看看到底哪错了,感激不尽。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015194 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved