繁体   English   中英

平衡二叉搜索树键

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM