• 全部
  • 问答

关于二叉查找树的问题

claudehotline 四川旷谷信息工程有限公司 服务器端工程师  2008-04-16 09:36:46
求一个算法: 如果要超找的数不在树中就返回比要查找的数大而且最接近要查找的数。 比如要查找39,因为39不在树中,所以因该返回40。
40
/ \
20 60
/ \ / \
10 30 50 40
/ \ / \
5 15 25 35
/ \ / \ / \ / \
2 8 12 18 23 28 33 38
...全文
43 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
不用遍历整棵树,在一个普通查找过程上稍微修改一下就可以了。查找过程中始终记录一个值——大于被查找数的最小值,最后如果找不到就返回这个值,一定是对的。
回复
lzy340623339 2008-04-17
我当场写的,刚起床,要赶着上课,所以我没有编译过,帖主发现BUG要宽容哦!
回复
lzy340623339 2008-04-17
bool search_Bin(BinTree *&t,int source,int &ret)
{
if(t==NULL) return FALSE;
bool flag=false;
BinTree *p=NULL;
int i=1;
else
{
while(t)
{ p=t;
if(source < t->value) t=t->value;
else if(source == t->value)
{
cout<<source<<"在树中"<<endl;
ret=source;
falg=TRUE;
break;
}
else
t=t->rchild;
}
}
if(!flag)
{
if(t->value > p->value && t->rchild != NULL) ret=t->rchild->value;
else if(t->value < p->value) ret=p->value;
else if(t->rchild == NULL)
while(t && i)
{
ret=t->value;
i--;
}
else return FALSE;
}
return TRUE;
}
回复
claudehotline 2008-04-17
刚回来, 现在看看, 先谢谢大家了^_^
回复
hyzhx 2008-04-17
中序遍历即可求得。
回复
相关推荐
发帖
数据结构与算法
创建于2007-08-27

3.2w+

社区成员

数据结构与算法相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-04-16 09:36
社区公告
暂无公告