[python] Trideni stromu.

David Michal david_michal na seznam.cz
Pátek Říjen 14 14:39:55 CEST 2005


Radek Kaňovský wrote:

Zdravim,

>sort() nepomuze, protoze napriklad o prvcich (323,5),(1024,49) nelze z
>hlediska porovnani nic rict bez dalsiho kontextu. Jestli spravne chapu
>zadani, tak se vlastne jedna o prochazeni stromu do sirky. Zkuste tohle:
>
>    root = 0
>    tree = [(1,0), (5,2), (7,3), (2,0), (3,1), (4,2)]
>
>    branches = {}
>    for item in tree:
>        branches.setdefault(item[1],[]).append(item)
>
>    bfs = [(root,None)]
>    i = 0
>    while branches:
>        node = bfs[i]
>        bfs.extend(branches.pop(node[0], []))
>        i += 1
>    print bfs
>  
>
To neni uplne ono, tohle dava vysledek: [(0, None), (1, 0), (2, 0), (3, 
1), (5, 2), (4, 2), (7, 3)]
ale ja bych potreboval [(0,None), (1,0), (3,1), (7,3), (2,0), (5,2), (4,2)]

>Radek Kaňovský
>  
>
Diky,
David





Další informace o konferenci Python