在这种情况下如何实现树状数据结构

时间:2012-10-25 00:58:31

标签: algorithm perl tree perl-data-structures

我有一个像这样的文件

A 100 200
A 120 220
B 140 250

另一个文件是这样的

A 130 210
A 133 215
B 180 270

然后我必须将第一个文件中的每一行与第二个文件的每一行进行比较,找出哪些行有交叉坐标

输出将是这样的

A 100 200 A 130 210
A 100 200 A 133 215
A 100 200 A 180 270

就是这样。

在我的代码中,代码就像这样,我从第一个文件中获取第一行,并与第二个文件的所有行进行比较。

所以我想知道如何实现像数据结构这样的树来实现这一点,因此复杂性将具有对数范围。

1 个答案:

答案 0 :(得分:3)

您不需要树状数据结构。如果您的文件按第一个坐标排序,则可以在线性时间内轻松完成。只需为保存当前相关行的每个文件维护一个缓冲区,您只需要为两个文件提前同步缓冲区。关键是,与另一个文件的给定行相交的行总是彼此相邻,所以你知道一旦你丢弃一行你不必再检查它了(因为文件是排序)。