Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Python编写一个算法,该算法以prufer代码作为输入并返回树的边集_Python_Algorithm_Math - Fatal编程技术网

用Python编写一个算法,该算法以prufer代码作为输入并返回树的边集

用Python编写一个算法,该算法以prufer代码作为输入并返回树的边集,python,algorithm,math,Python,Algorithm,Math,用Python编写一个算法,该算法以prufer代码作为输入并返回树的边集。 输入:一个名为“p”的列表(prufer代码,零索引) 例如: p=[3,1,0,0,3,2,9,9,2,3] (prufer代码可以在代码块中定义。您不需要编写接受用户输入的函数) 输出:名为“边”的列表(边集_ 例如: 打印(边缘) [3,4]、[1,5]、[0,1]、[0,6]、[3,0]、[2,7]、[9,8]、[9,10]、[2,9]、[3,2]、[3,11]] 我在这方面遇到了问题。如何获取“p”的值,以便

用Python编写一个算法,该算法以prufer代码作为输入并返回树的边集。 输入:一个名为“p”的列表(prufer代码,零索引) 例如:

p=[3,1,0,0,3,2,9,9,2,3]

(prufer代码可以在代码块中定义。您不需要编写接受用户输入的函数) 输出:名为“边”的列表(边集_ 例如:

打印(边缘)

[3,4]、[1,5]、[0,1]、[0,6]、[3,0]、[2,7]、[9,8]、[9,10]、[2,9]、[3,2]、[3,11]]


我在这方面遇到了问题。如何获取“p”的值,以便它在“边”中打印输出?

将序列(剩余部分)中的第一个顶点连接到序列(剩余部分)中未出现的最低顶点。删除序列中的第一个顶点,然后重复。连接其余两个顶点

def decode(p):
    p = list(p)
    vertices = set(range(len(p) + 2))
    while p:
        v = min(vertices - set(p))
        vertices.remove(v)
        yield p.pop(0), v
    yield min(vertices), max(vertices)


print(list(decode([3, 1, 0, 0, 3, 2, 9, 9, 2, 3])))