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

Algorithm 在这种情况下,如何实现树状数据结构,algorithm,perl,tree,perl-data-structures,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 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 18

我有一个这样的文件

A 100 200
A 120 220
B 140 250
A 130 210
A 133 215
B 180 270
另一个文件是这样的

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
接下来就是这样

在我的代码中,我从第一个文件中得到第一行,并与第二个文件的所有行进行比较


因此,我想知道如何实现一个树状数据结构来实现这一点,以便复杂性达到对数级。

您不需要树状数据结构。如果您的文件按第一个坐标排序,则可以在线性时间内轻松完成。只需为每个文件维护一个缓冲区,其中包含当前相关的行,并且只需同步推进两个文件的缓冲区。关键是,与另一个文件的给定行相交的相关行将始终彼此相邻,因此您知道,一旦放弃一行,就不必再检查它(因为文件已排序)。

您不需要树状数据结构。如果您的文件按第一个坐标排序,则可以在线性时间内轻松完成。只需为每个文件维护一个缓冲区,其中包含当前相关的行,并且只需同步推进两个文件的缓冲区。关键是,与另一个文件的给定行相交的相关行将始终彼此相邻,因此您知道,一旦放弃一行,就不必再检查它(因为文件已排序).

相交坐标是什么意思?相交坐标是什么意思?请您解释一下如何将文件加载到缓冲区并从中进行比较-Thanks@dissw.geek9缓冲区可以是一个行数组,从文件中读取行并添加到数组末尾,而总是从数组开头丢弃。这类似于队列或FIFO数据结构。您能解释一下如何将文件加载到缓冲区并从中进行比较吗-Thanks@dissw.geek9缓冲区可以是一个行数组,从文件中读取行并添加到数组末尾,而总是从数组开头丢弃。这类似于队列或FIFO数据结构。