具有特殊操作的二进制搜索树

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了具有特殊操作的二进制搜索树相关的知识,希望对你有一定的参考价值。

假设我们在整数上有正常的二叉搜索树。

我感兴趣的是3的倍数和大于给定数字x的元素数量。此外,我感兴趣的是3的倍数元素的数量,严格地在两个给定的数字x1,x2和x1 <x2之间。天真的方法是例如搜索数字x,然后检查每个数字是否是3的倍数。有没有办法修改二进制搜索树,这样这两个操作更有效率

答案

在每个节点中,您可以在该节点的子树中保留3的倍数。

可以在不改变添加/删除/旋转/重新平衡操作的复杂性的情况下维护这些计数。

然后计算大于x的3的倍数,搜索x。无论何时离开某个节点(因为它> x),您都要从该节点添加计数,并从您移动到的节点中减去计数。

如果在内部节点中找到x,请从其右侧子节点添加计数。

以上是关于具有特殊操作的二进制搜索树的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 700.在二进制搜索树中搜索

python 在python中的二进制搜索树

javascript 是二进制搜索树

java 最近的二进制搜索树值(270. leetcode)

java 270.最近的二进制搜索树值(#)。java

java 270.最近的二进制搜索树值(#)。java