我正在寻找一种有效的方式来表示和检索地理关系,例如。地区->州->美国。这应该适应任何层次的层次结构,例如。地区->地区->州->大地区(东/西/南/北)->美国。
我的要求是
- 我主要在最低级别操作 - 所以让他们快速完成应该是第一要务。优选恒定时间。
- 然后,我想轻松地在州级别执行聚合,例如合并地区数据(因此获取节点的所有子节点) - 这是第二个标准。
- 一个级别的订单无关紧要 - 例如。对于北卡罗来纳州,我不介意我先得到罗利还是费耶特维尔。
正如您几乎已经猜到的那样 - Tree数据结构在逻辑上适用于该问题。但是我找不到有效地获取所有叶子的方法。我可以检查一个节点是否在 O(log n) 时间内是叶子,但我已经检查了每个节点。
我看过 B、B+ 树,但我不明白的是它们使用升序或降序等顺序来维持它们的顺序。
我的直觉是应该有有效的解决方案,因为 Windows 或任何文件系统都会这样做。文件->文件夹->大文件夹->C->我的电脑。这种计算也必须在数据挖掘中完成,比如说集群(我记得读过这类的东西)
在这个方向上的任何线索将不胜感激。
谢谢