免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: yulihua49
打印 上一主题 下一主题

二叉树不等查找的算法谁清楚?前些日子发表CSTL的大侠说说看 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2012-04-19 16:56 |只看该作者
回复 29# yulihua49


没有。我是临时想起,所以我标注了“留待验证”。你最好多实验一下,免得出问题。

论坛徽章:
0
32 [报告]
发表于 2012-04-19 16:57 |只看该作者
回复 30# zhaohongjian000


   
。。。。

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
33 [报告]
发表于 2012-04-19 17:04 |只看该作者
walleeee 发表于 2012-04-19 16:56
回复 29# yulihua49


STL有没有提供map的不等查询?

论坛徽章:
0
34 [报告]
发表于 2012-04-19 17:06 |只看该作者
回复 33# yulihua49


你也别在这里纠结了,你二分查找吧。

其实二叉树就是二分思想的体现,前面说的那些,都是二分。你排序后二分吧。

论坛徽章:
0
35 [报告]
发表于 2012-04-19 17:06 |只看该作者
回复 33# yulihua49


stl好像有个sort,你完了在二分

论坛徽章:
0
36 [报告]
发表于 2012-04-19 17:08 |只看该作者
stl那个sort还是很快。你百万级别的数据根本就不是什么问题。

当然,对象的拷贝复制任然是一个问题。这些细节你要留心。

论坛徽章:
0
37 [报告]
发表于 2012-04-19 17:17 |只看该作者
回复 4# yulihua49


    算法导论里面有比较详细的解答

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
38 [报告]
发表于 2012-04-20 11:28 |只看该作者
_Rayx 发表于 2012-04-19 17:17
回复 4# yulihua49

能提供一下吗?多谢了。

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
39 [报告]
发表于 2012-04-20 11:30 |只看该作者
本帖最后由 yulihua49 于 2012-04-20 11:41 编辑
walleeee 发表于 2012-04-19 17:06
回复 33# yulihua49


下面的函数可以解决这个问题,但效率?等于是排序了。
  1. //bt为根结点的指针,返回值为bt的节点数
  2. // context为应用提供的上下文数据,由counter使用
  3. //counter由应用提供,判断是否符合计数条件,不符合返回0.
  4. int BB_Tree_Count(T_Tree *  bt,void *context,
  5.         int (*counter)(T_Tree *bt,void *context))
  6. {
  7.         return !bt?0:(BB_Tree_Count(bt->Left,context,counter) +
  8.                 ((counter)?counter(bt,context):1) +
  9.                 BB_Tree_Count(bt->Right,context,counter));
  10. }
复制代码
这个函数解决了 select count(*) from tree 的问题,也是内存数据库的一个核心组件。
它正序调用counter,你的counter把结果放在context里就是了。

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
40 [报告]
发表于 2012-04-20 11:39 |只看该作者
walleeee 发表于 2012-04-19 17:06
回复 33# yulihua49

不行啊,数据是动态的,随时从数据库加载新的数据或删除旧的数据。
它是ORACLE的一个表的内存CACHE。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP