我有边缘,我想用它构建一个树。
问题是我只能在边缘按特定顺序构建树结构时才能构造树形结构。 订单示例:
(vertex, parent_vertex)
good: bad:
(0, ) <-top (3, 2)
(1, 0) (1, 0)
(2, 1) (3, 2)
(3, 2) (0, ) <-top
我迭代抛出边缘并且当前顶点试图在创建的树中找到它的父节点,然后我构造节点并插入它。
result tree:
0 - 1 - 2 - 3
因此,树中始终必须存在新添加顶点的父级。 问题是如何对输入边进行排序。声音告诉我拓扑排序,但它是顶点。是否可以对其进行排序?
答案 0 :(得分:2)
@mirt感谢你指出我的方法的优化,你有更好的吗? 我将把以下的算法用于参考
最初构造一个哈希映射来存储树中的元素:H,添加根(在您的情况下为null /或表示该根的任何内容)
取对(_child,_ parent)
复杂度是O(n)。