我有一个对象,向我显示索引之间的连接,并具有变量index1
,index2
。基于索引的连接,我想创建一棵总是从0
开始的树。
在此示例中,0
与2
和5
连接,因此将它们首先添加到树中,然后从最低的位置继续,我需要查找连接到2
的数字。大小写是6
和7
等。
{index1=0, index2=2}
{index1=3, index2=4}
{index1=1, index2=4}
{index1=0, index2=5}
{index1=2, index2=6}
{index1=1, index2=5}
{index1=2, index2=7}
0
2 5
6 7 1
4
看来我需要将其转换为邻接列表。
作为最终结果,我需要遍历树或所有节点并获取结果,在这种情况下,结果将是:
0 - 2 - 6 - 7 - 5 - 1 - 4
我应该使用什么来获得期望的结果?
或者如何创建一个
preorder traverse
,可以在其中添加到根中,这意味着,如果我要给值Adjacency List
然后给出(0, 2)
,它将把这些值添加到彼此之间而不是彼此分开,然后(0,5)
进入(2, 6)
2。 最佳答案
import os
vertexNum =#Vertexes
edgeNum = #Edges
edgeList = [[0,[-3]]]
source = "destination of edgelist file"
f = open(source, "r")
l = f.readlines()
l2 = [line.rstrip('\n') for line in l]
for i in range(1,vertexNum+1):
edgeList.append([i,[]])
for line in l2:
graph_Local = [line.split(" ")[0],line.split(" ")[1]]
edgeList[int(graph_Local[0])][1].append(int(graph_Local[1]))
edgeList[int(graph_Local[1])][1].append(int(graph_Local[0]))
with open('destination to save adjacency list','w') as eFile:
for item in edgeList:
eFile.write("%s\n" % item[1])
eFile.close()
关于java - 将Edgelist转换为邻接列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53609633/