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

标签 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

然后就是这样。

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

所以我想知道如何实现树状数据结构来执行此操作,以便复杂度达到对数级。

最佳答案

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

关于algorithm - 在这种情况下如何实现树状数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13060130/

相关文章:

java - Java 中的 K-Ary 树实现 : how to?

javascript - "Maximum call stack size exceeded"在处理 JS 时实现 Fractal plant 错误

java - 二叉搜索树实现和java

在二叉搜索树中查找小于给定值的所有值的算法

algorithm - 从列表和 isDescendant 和 isAscendant 函数构建树

algorithm - 使用通配符管理配置树的好算法?

perl - ExtUtils::MakeMaker 自定义目标

perl - Perl 中的 Win32::AdminMisc 编译错误

perl - '_var'私有(private)实例变量在什么情况下声明为 'use fields'?

c# - 为什么在手指树和链表等中使用元组