| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 796 人关注过本帖
标题:一道编程题,请哪位能人帮忙解答
只看楼主 加入收藏
wujiangah
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-11-12
收藏
 问题点数:0 回复次数:5 
一道编程题,请哪位能人帮忙解答

我不是学计算机的,前天我一小妹问我一题,顾来此向给位高人请教,谢谢了,题目如下:

任意输入7个整数到数组s[ ]中(可以用赋初值的方法),输入一个关键字的值,实现树查找(需要先建二叉排序树,并用中序遍历验证其正确性),返回地址.

搜索更多相关主题的帖子: 能人 计算机 解答 遍历 
2005-11-12 13:29
wujiangah
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-11-12
收藏
得分:0 
怎么没人回啊,是我贴错了地方还是都不会啊,哎~~
2005-11-12 15:38
cxwl3sxl
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:495
专家分:129
注 册:2005-11-12
收藏
得分:0 
"二叉排序树"是什么啊

努力,哈哈,总有一天会变成高手~~~~~~因为我相信:没有办不到,只有想不到!http://t..cn/fpress
2005-11-12 17:30
city505
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2005-11-5
收藏
得分:0 
你可以先查中间的,然后查两边。再查中间,再查两边就行了!
2005-11-12 19:58
无铭剑客
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2005-10-31
收藏
得分:0 

二叉排序树我还没接触过,不过也给朋友你找了一个程序,应该能用的!
源程序:
#include <stdlib.h>
#include <stdio.h>
#define NULL 0
typedef int KeyType;
typedef struct{
KeyType key;
}ElemType; //元素类型
typedef struct BiTNode{
ElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

BiTree find(BiTree root,KeyType key){ //在二叉排序树中查找其关键字等于给定值的结点是否存在,并输出相应信息
BiTNode *p;
p=root;
if (p==NULL) return NULL;
else if (p->data.key==key) return p;
else if (key<p->data.key) return find(p->lchild,key);
else return find(p->rchild,key);
}
void Insert(BiTree *p,BiTree t){ //在二叉排序树中插入一个新结点
if (*p==NULL) *p=t;
else if(t->data.key<(*p)->data.key) Insert(&((*p)->lchild),t);
else if(t->data.key>(*p)->data.key) Insert(&((*p)->rchild),t);
}
void inorder(BiTree p){ //中序遍历所建二叉排序树,将得到一个按关键字有序的元素序列
if(p!=NULL){
inorder(p->lchild);
printf("%5d",(p->data).key);
inorder(p->rchild);
}
}
void main(){
char ch;
KeyType key;
BiTree p,s;
int i=0;
printf("Please input datas (9999:end):\n");//建立一棵二叉排序树,元素值从键盘输入,直到输入关键字等于9999为止
scanf("%4d",&key);
p=NULL;
while(key!=9999){
s=(BiTree)malloc(sizeof(BiTNode));
(s->data).key=key;
s->lchild=s->rchild=NULL;
Insert(&p,s);
scanf("%d",&key);
}
printf("Create is completed\n");
inorder(p); //中序遍历已建立的二叉排序树
printf("\n");
do{ //二叉排序树的查找,可多次查找,并输出查找的结果
printf("Input the key you want to search:");
scanf("%4d",&key);
s=find(p,key);
if (s!=NULL) printf("success,the value is %4d ",s->data.key);
else printf("unsuccess");
printf("\ncontinue?y:n\n");getchar();
ch=getchar();
}while(ch=='y'||ch=='Y');
}

2005-11-12 20:27
wujiangah
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-11-12
收藏
得分:0 
谢谢楼上的朋友,.
2005-11-13 10:22
快速回复:一道编程题,请哪位能人帮忙解答
数据加载中...
 
   



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

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