首页 > 代码库 > 算法5-5:线段交叉问题

算法5-5:线段交叉问题

问题


给定一系列线段,每条线段可以是水平或者竖直。求相交的线段


解决


算法的基本思想是先将线段以x坐标进行排序。做一条扫描线,从左往右扫描,也就是下图中的红线。


当进入一条水平的线时,记录该线段的y坐标。



当走出水平线时,从二叉查找树中删除该线段的y坐标。



当遇到竖直的线时,判断该线段范围内有无之前记录的坐标即可判断两线是否相交。