[python] Trideni stromu.

Jaroslav Pachola j_p na centrum.cz
Pátek Říjen 14 12:18:15 CEST 2005


Ahoj,

moje rada je vykaslat se na vlastni rekurzivni funkce a pouzit klasickou 
metodu sort(), ktere podstrcis porovnavaci funkci. Staci si sepsat na papirek 
pravidla, podle kterych se ty polozky radi mezi sebou (vsechny pripady) a ta 
funkce Ti z toho sama vyplyne.

JP

Dne Friday 14 October 2005 11:27 David Michal napsal(a):
> Zdravim,.
> mam nesetrideny seznam a[(id, parent_id)...]
>
> Kde a[x][0] je ID zaznamu a a[x][1] je ID rodice, prvni zaznam v seznamu
> je vzdy prvni ve stromu.
>
> napr. [(1,0), (2,0),(3,1),(4,2)]
>
> a potreboval bych ho setridit:
> [(1,0),(3,1),(2,0),(4,2)]
>
> Tzn. funkce vrati setrideny seznam tak aby vsechna decka byla umistena
> za svym rodicem (umisteni decek dle poradi v seznamu a).
>
> Nevite nekdo jak to resit?
>
> Zkousel jsem bastlit ruzne rekurzivni funkce, ale zatim jsem dosahl
> pouze zvyseneho hluku od ventilatoru pocitace.
>
> Zatim nejblize jsem se dostal pomoci:
> #a - vstup, b - vystup
> def sortTree(a, b, pos = 0, cidu = [0,]):
>     if not a: return
>     i = a.pop(pos)
>     b.append(i)
>     for j in a:
>         pidu = j[-1]
>         if cidu[-1] == pidu:
>             pos = a.index(j)
>             print cidu, ',',pidu, ',', i
>             cidu.append(j[1])
>             sortTree(a, b, pos, cidu)
>     print cidu, ',', ',', i
>     if cidu <> [0,]: cidu.pop()
>     sortTree(a, b, 0, cidu)
>
> Ale tahle funkce ma nekde velkou chybu, spatne tridi potomky.
>
> Diky za jakykoliv napad,
> David
>
>
>
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python



Další informace o konferenci Python