我有一个对象,向我显示了索引之间的连接,并具有变量return users.stream()
.filter(user -> id.equals(user.getId()))
.map(
user -> Optional.ofNullable(
user.getData()
).orElseGet(
() -> emptyMap()
)
)
.collect(Collectors.toList())
;
,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
并获得结果,在这种情况下,结果将是:
preorder traverse
我应该使用什么来获得理想的结果?
或者如何创建一个0 - 2 - 6 - 7 - 5 - 1 - 4
,可以在其中添加到根目录,这意味着如果我要给值Adjacency List
然后给定(0, 2)
,它将添加那些不在下面的值彼此分开但彼此分开,然后(0,5)
将进入(2, 6)
2下。
答案 0 :(得分:0)
优化程度不高,但我认为它会起作用。
static class Connection{
int index1;
int index2;
Connection(int index1,int index2){
this.index1=index1;
this.index2=index2;
}
}
private static List<Connection> connections;
private static List<List<Integer>> adjList;
private static int max;
static void makeAdjList(){
for(int i=0;i<max;i++){
for(int j=0;j<connections.size();j++){
Connection c=connection.get(j);
if(c.index1==0||c.index2==0){
adjList.get(i).add(c.index1==0?c.index2:index1);
}
}
}
}
答案 1 :(得分:0)
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()