[英]Balanced Binary Search Tree Keys
我试图弄清楚如何键入存储“线段”的二叉搜索树的元素。 我正在阅读的计算几何书说
更详细地说,我们将与扫描线相交的线段存储在平衡二叉搜索树 T 的叶子中。沿着扫描线的线段从左到右的顺序对应于叶子的从左到右的顺序在 T
假设关键是事件点的 x/y 值(此处为 A 或 B),在以下情况下状态结构将如何保持线段的正确顺序(虚线是扫描线)。
B 显然在 A 之前击中扫描线,但如果 B 的段加上它的 x/y 值,它将在状态行中的 A 之后。
所以在我看来,状态行段的键不能是 static 值,比如点的 x/y 值——但是这本书在这方面如何构建树时非常安静。 我已经看到一些示例,将键作为 (m,b) 的元组,其中m
是线条渐变, b
是 y 截距,但我不太清楚它是如何工作的。
您需要以与当前时刻与扫描线相交的相同顺序存储线段。 由于其性质,二叉搜索树是可能的:左节点包含较低的键,右节点 - 较大的键。
由于结构的动态特性,键也将是动态的。 每次将段添加到 BST(二叉搜索树)中时,您都需要在其 Y 坐标处比较键,该键将是扫描线上交点的 X 分量。
在扫描线与 B 段或 B 段起点相交的时刻,A 段已经在 A 段起点处添加到 BST 中。 所以按照 BST 项插入的规则,你需要检查 B 段的键,即 Y 处的 X 坐标,它是否大于或低于 BST 项的键。 很明显 B 的 Y 处的 X 坐标小于 A 的 Y 处的 X 坐标,所以 B 段将被添加到 BST 的左节点
A
/ \
B null
/ \
null null
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.