_Rayx 发表于 2012-04-19 15:15 看得看这个二叉树满足什么条件了,如果这个树就是一个平常的,那么就只能遍历记录了。 当然上面那种如果二 ...
zhaohongjian000 发表于 2012-04-19 15:41 正常查找,把遇到的最后一个大于要查的key的节点和最后一个小于要查的key的节点记下来就是了。
yulihua49 发表于 2012-04-19 15:42 遍历? 希望按深度查找,实现O(log2N)。
zhaohongjian000 发表于 2012-04-19 15:44 就是正常的查找啊,难道这个二叉树不是有序的?
鸡丝拌面 发表于 2012-04-19 15:45 遍历+前驱后继。
yulihua49 发表于 2012-04-19 15:46 正常查找是递归的,记不住上下文。
zhaohongjian000 发表于 2012-04-19 15:48 你不会加两个变量记住啊。
yulihua49 发表于 2012-04-19 15:52 在栈里,每个变量都在不同的层,全局变量不能用,要求线程安全。
zhaohongjian000 发表于 2012-04-19 15:54 刚才呆了,非递归查找呗,也就多写点代码。
yulihua49 发表于 2012-04-19 15:56 麻烦了。
zhaohongjian000 发表于 2012-04-19 16:00 这样也嫌麻烦,你是想要啥样的算法呀。。。 还是递归,用来记录的变量在最外层函数中分配在栈上。
yulihua49 发表于 2012-04-19 16:07 作为地址带下去? 你能写一个试试看?我等着,多谢。 查找大于或小于之一即可。
zhaohongjian000 发表于 2012-04-19 16:18
yulihua49 发表于 2012-04-19 16:20 多谢,我读读看,再说。 你这个需要遍历,当数百万的记录,效率?
zhaohongjian000 发表于 2012-04-19 16:26 不需要啊,以下略的代码把你那个return那行贴过去就行了。这不就是二叉树的递归查找吗。
yulihua49 发表于 2012-04-19 16:29 当是左右儿子的情况根本就找不到。
zhaohongjian000 发表于 2012-04-19 16:33 额,光考虑key查不到的情况了。 如果key查到了,那就返回左子树的最大节点/右子树的最小节点(这两个 ...
yulihua49 发表于 2012-04-19 16:36 你能帮我动这个脑筋很好,办法一定会有的,而且不会太复杂。
yulihua49 发表于 2012-04-19 16:29 当是左右儿子的情况根本就找不到。 例如在15节点的满平衡树,12号节点的左右临近值,11号和13号都是12号 ...
walleeee 发表于 2012-04-19 16:51 不知道这么行不行,没验证。 右递归,知道转折,比如
walleeee 发表于 2012-04-19 16:56 回复 29# yulihua49
_Rayx 发表于 2012-04-19 17:17 回复 4# yulihua49
walleeee 发表于 2012-04-19 17:06 回复 33# yulihua49
walleeee 发表于 2012-04-20 15:18 回复 39# yulihua49
_Rayx 发表于 2012-04-20 15:03 回复 38# yulihua49
walleeee 发表于 2012-04-20 20:00 回复 44# yulihua49
walleeee 发表于 2012-04-20 20:10 回复 49# yulihua49
selfrun 发表于 2012-04-21 08:18 map有lower bound
yulihua49 发表于 2012-04-23 12:03 好的。 鉴于问题已经解决,这个问题转化成一个考题: 在一个平衡二叉树里,如何实现不等查找:
在一个平衡二叉树里,如何实现不等查找: 以[O(log2(N))]的代价,找到大于指定值的最小节点。 建议直接用递归做。
walleeee 发表于 2012-04-23 12:37 回复 56# yulihua49
walleeee 发表于 2012-04-23 12:38 回复 57# yulihua49
walleeee 发表于 2012-04-23 12:42 回复 58# walleeee
walleeee 发表于 2012-04-23 12:45 回复 63# yulihua49
再给你一点时间,拿出你的程序。交流一下
walleeee 发表于 2012-04-23 12:47 什么叫“平衡的也能做”,难道平衡二叉查找树这样不很正常么?你说法真奇怪。
walleeee 发表于 2012-04-23 12:48 回复 66# yulihua49 什么叫再给我一点时间?我为什么要搞这个?
walleeee 发表于 2012-04-23 12:45 回复 63# yulihua49 你不贴详细的算法描述和实现,你觉得对别人有任何哪怕一点意义么?
walleeee 发表于 2012-04-23 12:55 回复 69# yulihua49
包括另一个帖子,也没人拿出一个像样的程序,网上查的也没有
效率也很可怜
我的算法在平衡树保证O(log(N)),非平衡也可以做,但不保证O(log(N))
walleeee 发表于 2012-04-23 13:00 回复 70# yulihua49