根据多个给定的2D坐标构造给定高度的完整二叉树

时间:2018-10-09 09:43:53

标签: algorithm binary-tree binary-search-tree

我正在尝试编写一个程序,该程序最初将接收下一行中要给出的节点数以及要生成的完整二叉树的所需高度,并在下一行中包含这些节点的2D坐标。

然后,它将尝试使用那些2D坐标构造一个可接受的完整二叉树,其中不允许两个边相交。 (下面的示例)。

如果存在此类树,则应按相同顺序返回此类树中每个节点的位置编号(以1为根,所有其他节点从上至下,从左至右递增编号)节点进入输入,并且树中未使用的节点应编号为0。如果根本不存在这样的树,则应打印:“这里没有完整的二叉树!”

我尝试了范围树和k-d树无济于事,因为我很难绕过头来检查如何检查树是否可以以任何角度构造,例如它沿着x轴或y轴或与此相关的任何其他线下降。您可以提供任何方法,我将不胜感激。

示例输入:

9 2
(100,300)
(200,300)
(500,301)
(200,200)
(300,201)
(400,203)
(500,206)
(300,101)
(402,100)

对应的输出:

4, 1, 0, 2, 0, 3, 6, 5, 7

要直观地了解我的意思,您可以看一下这张图片:

enter image description here

预先感谢您的帮助。

0 个答案:

没有答案