我有一些边缘数组,如下所示:
edges = [e1 e2 e3...en]
我现在通过测试彼此相对的两条边来生成一组节点
nodes = []
for edge1 in edges:
for edge2 in edges:
if edge1 == edge2 continue
nodes.append[create_node(edge1, edge2)]
我需要做的是现在创建一个连接节点边缘的图形。像这样:
然而,在这种情况下,我只有一组边,你可以看到,我创建了一组节点,我知道两个父边的每一个。如您所见,每条边都可以是两个节点的一部分。
我不确定如何解决这个问题
答案 0 :(得分:0)
假设节点具有以下结构
class Node{
String name;
List<Node> friendNodes = new ArrayList();
}
实例化<node name: Node>
的地图,名称为nodeMap。现在保持空白。
迭代边列表。对于边e1,节点是n1和n2。
检查nodeMap中是否存在节点n1和n2。如果没有加入 nodeMap;
如果指向edge,则从n1到n2,然后将n2添加到节点n1的friendNodes;
如果edge是无向的,则将n2添加到节点n1的friendNodes并添加节点n2的n1 friendNodes。