| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 560 人关注过本帖
标题:二叉排序树,问题出在哪里
只看楼主 加入收藏
飞飞小雨
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-5-5
收藏
 问题点数:0 回复次数:2 
二叉排序树,问题出在哪里

#include<stdio.h>
#include<malloc.h>

typedef int keytype;
typedef struct node
{
keytype data;
struct node *left,*right;
}bitnode,*bitree;

//二叉排序树的查找
void searchbst (bitree bt,bitree *f,bitree *c,keytype key)
{ //在根结点bt所指的二叉排序树中,查找关键字值 等于key的数据
//元素c指向找到的结点,f指向c的双亲结点。c,f的初值 都为空
//若查找失败,则c为空
while (bt!=NULL)
if(bt->data==key)
{
*c=bt;break;}
else if (key<bt->data)
{
*f=bt;bt=bt->left;}
else
{
*f=bt;bt=bt->right;
}
}

//二叉排序树的插入
int insertbst(bitree *bt,keytype key)
{
bitree f=NULL,c=NULL,s;
searchbst(*bt,&f,&c,key);//bt为二级指针,存储根结点,地址指针
if(c!=NULL)return 0;
s=(bitree)malloc(sizeof(bitnode));
s->data=key;
s->left=s->right=NULL;
if(f==NULL)*bt=s;//插入结点为根结点
else if(key<f->data)
f->left=s;//插入新结点
else f->right=s;
return 1;
}

//二叉排序树的创建
void creatbst(bitree *bt)
{
keytype key;
*bt =NULL;//根结点的初值为空
scanf("%",&key);
while(key!=-1)
{
insertbst(bt,key);
scanf("%d",&key);
}
}


void main()
{
bitree *bt;
bt=NULL;
creatbst(bt);
}

搜索更多相关主题的帖子: 关键字 include 元素 
2007-08-16 09:53
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 

写的真混乱。

建立一棵排序树很简单那
void insert(node *&root,int ival){
if (root == NULL)
root = new node(ival);
else{
if (ival < root->data)
insert(root->left,ival);
if (ival > root->data)
insert(root->right,ival);
}
}
一步步的先弄清楚吧!


Fight  to win  or  die...
2007-08-16 15:47
飞飞小雨
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-5-5
收藏
得分:0 
你用的是递归法。。。。
我觉得我写的还好吧,都有注释。。。
我想知道我的程序错在哪里
你写的我能看懂。。。。
2007-08-16 20:10
快速回复:二叉排序树,问题出在哪里
数据加载中...
 
   



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

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