如何从边缘集中获得子父关系

时间:2014-07-20 10:39:47

标签: python dictionary binary-tree

我正在使用一个图表,该图表具有树结构。我试图将图形的一组边缘映射到父子关系。我使用python字典来存储关系。让我举一个例子来说明。假设我有一个包含5个节点的图形,边缘给出的是:

2 1
3 1
4 2
5 2

代码:

paths = {}
n = int(raw_input())      ##number of nodes
j = 1
while j < n:
    u, v = raw_input().split(" ")
    paths[int(v)] = int(u)
    j += 1

所以我的字典是{2:1, 3:1, 4:2, 5:2}

但如果以相反的顺序给出边缘,代码将失败:

1 2
1 3
2 4
2 5

在这种情况下,我的字典将是{1:3, 2:5},我错过了两个边缘。

如何让代码更健壮?

编辑:对于每个边缘,我需要能够告诉哪个节点是子节点,哪个节点是父节点

1 个答案:

答案 0 :(得分:0)

以下列方式使用字典:。

paths[int(v)] = int(u)

您只需重新分配键所指向的值,而不是将其添加到列表中。

如果我理解正确,您应该使用以下内容:

paths = []
n = int(raw_input())      ##number of nodes
j = 1
while j < n:
    u, v = raw_input().split(" ")
    paths.append(int(u), int(v))
    j += 1

至少不依赖于输入顺序。