当输入是具有14个级别(32767个顶点)的二叉树时,python中的这个脚本会导致分段错误

2024-05-13 02:20:04 发布

您现在位置:Python中文网/ 问答频道 /正文

边位于字符串列表中:[“Origin1 Destination1”“Origin2 Destination2”…] 该程序在较小的测试中完成了这项工作,但是当它尝试运行14级二叉树时,它失败了,并显示分段错误。你知道吗

def AdjVtc(vertex, lstObjVtx, lstEdges):
    adj = []
    for edge in lstEdges:
        edg = edge.split(" ")
        origin = edg[0]
        destination = edg[1]
        if origin == vertex.getName():
            for vertexSearch in lstObjVtx:
                if vertexeSearch.getName() == destination:
                    if vertexSearch.getColor() != 2:
                        adj.append(vertexSearch)
                    break

    return adj




def bfs(lstVertex, lstEdges):

    lstObjVtx = []
    for a in lstVertex:

        vertex = Vertex(a, 0)
        lstObjVtx.append(vertex)


    lstObjVtx[0].setCor(1)
    lstObjVtx[0].setD(0)
    queue = []
    queue.append(lstObjVtx[0])
    print (lstObjVtx[0].getName(), end = " ")
    print (lstObjVtx[0].getName(), end = " ")
    print (0)
    while queue != []:
        actual = queue.pop(0)

        lstAdj = AdjVtx(actual, lstObjVtx, lstEdges)
        for adjacent in lstAdj:
            if adjacent.getColor() == 0:
                adjacent.setD(atual.getD() + 1)
                adjacent.setFather(atual)
                adjacent.setColor(1)
                queue.append(adjacent)
                print (lstObjVtx[0].getName(), end = " ")
                print (adjacent.getNome(), end = " ")
                print (adjacent.getD(), end = "\n")

        actual.setColor(2)

Tags: inforifqueueendvertexprintadjacent