假设我有以下数字范围:
0-500 0-100 75-127 125-157 130-198 198-200
现在,假设我需要能够检查任何给定的数字并查看它在哪个范围内。哪种数据结构最有效地用于说明数字 100 属于范围 0- 500、0-100 和 75-127?我只想要一个保存起始值的二叉树吗?在那种情况下,树中的每个节点都可以保存包含该起始点每个范围的多个对象吗?
请注意,我只需要检索这个特定的应用程序,我真的不认为自己需要在进程中修改它,所以检索速度是我的首要任务。
谢谢!
最佳答案
你需要的是interval tree .区间树是一个非常通用的概念,每个问题的节点数据都略有不同。在您的情况下,每个节点都会保留一个输入间隔列表,该列表涵盖了节点所代表的间隔。
关于algorithm - 用于根据重叠范围快速检查数字的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23026298/