[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