Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: thom 26. 01. 2012, 15:05:42

Název: Porovnanie dvoch ADT typu strom
Přispěvatel: thom 26. 01. 2012, 15:05:42
Dobry den,
pre svoj projekt by som potreboval porovnat dva ADT - strom, ktore vsak maju roznu hlbku a aj velkost. Takze hladam nejaky algoritmus, ktory porovna dva stromy roznej hlbky a velkosti a urci ci su tieto dva stromy rovnake alebo rozne.
Projekt riesim v Jave a nasiel triedu
DefaultMutableTreeNode - http://docs.oracle.com/javase/1.4.2/docs/api/javax/swing/tree/DefaultMutableTreeNode.html
ktora udrziava data v strome a aj vypisuje strom do hlbky aj do sirky.
Název: Re:Algoritmus na porovnanie dvoch ADT typu strom
Přispěvatel: andy 26. 01. 2012, 15:52:33
Bud nechapem alebo...ved normalne prechadzas oba po 1 kroku (samozrejme rovnakou strategiou..) a ked nemozes urobit ten isty krok alebo nemaju rovnake listy, tak su rozne. Ci? Uzly si ukladas do nejakeho zasobnika.
Název: Re:Algoritmus na porovnanie dvoch ADT typu strom
Přispěvatel: aaaaaaaa 26. 01. 2012, 15:55:42
Netusim, co presne chces robit, ale na porovnanie 2 stromov je obycajne najlepsie najst pointre na koren. Potom sa 2 stromy rovnaju, ked sa rovnaju korene a vsetky ich podstromy (rekurzia). Rekurziu je potom mozne odstranit, ale "z fleku" sa to pise horsie naraz bez rekurzie.
Naco to robit nejak zlozitejsie?
Název: Re:Algoritmus na porovnanie dvoch ADT typu strom
Přispěvatel: Ivan 27. 01. 2012, 10:08:29
A co ma byt vysledek? Prunik tech stromu? Doplnek? Anebo proste "=" / "!=".
Název: Re:Algoritmus na porovnanie dvoch ADT typu strom
Přispěvatel: thom 27. 01. 2012, 12:57:27
No vysledkom by malo "=" alebo "!=" to zname, ze "ano su rovnake" alebo "nie nie su rovnke".

Uvediem priklad - a[ b[] c[] ] = a[ b[] c[] ]
                    ale a[ b[] c[] ] != a[ b[] c[] d[] ]

Nezalezi mi na tom ake prvky obsahuju, potrebujem zistit ci struktura stromov je rovnaka.
Název: Re:Algoritmus na porovnanie dvoch ADT typu strom
Přispěvatel: hu 27. 01. 2012, 14:26:54
Bud nechapem alebo...ved normalne prechadzas oba po 1 kroku (samozrejme rovnakou strategiou..) a ked nemozes urobit ten isty krok alebo nemaju rovnake listy, tak su rozne. Ci? Uzly si ukladas do nejakeho zasobnika.

No jiste.
Název: Re:Algoritmus na porovnanie dvoch ADT typu strom
Přispěvatel: Zopper 28. 01. 2012, 19:08:31
Prostě udělat nějakou formu průchodu stromem (in-order, pre-order, ...) a pokud se kterýkoliv uzel liší, tak se stromy nerovnají. :)