[python] Trideni stromu.
Radek Kaňovský
rk na dat.cz
Pátek Říjen 14 14:20:39 CEST 2005
On Fri, Oct 14, 2005 at 01:46:15PM +0200, David Michal wrote:
> >ale metoda sort() je rekurzivni. K tomu reseni - melo by stacit si
> >uvedomit, jake jsou vztahy mezi jednotlivymi polozkami toho listu a podle
> >toho je mezi sebou srovnat.
> >
> Tady trosku plavu, vztah mezi polozkami je ten ze pokud a[n][-1] ==
> a[posledni_rodic][0] tak a[n] je potomkem posledniho rodice. Jak bych
> mohl podstrcit metode sort() vlastni fci, ktera by umela toto porovnat?
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
Radek Kaňovský
Další informace o konferenci Python