1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

rekuriv geschachtelte Bäume in Collections

    • Frage
  • Elland
  • 26. Juni 2007 um 17:30
  • Unerledigt
  • Elland
    2
    Elland
    Mitglied
    Punkte
    35
    Beiträge
    5
    • 26. Juni 2007 um 17:30
    • #1

    Hi Leute,

    habe eine Aufgabe für meine Klausurvorbereitung vor mir in der ich zwei Collections auf Gleichheit prüfen soll, die jeweils rekursiv geschachteltsind. D.h. sie enthalten beide Bäume.

    Mein Problem dabei ist erstmal schon das ich bisher nicht genau weiß, wie diese Collections denn in diesem speziellen Fall auszusehen haben.

    Evtl. könnte mir mal jemand mit einem einfachen Beispiel, bzw. eienr Erklärung, auf die Sprünmge helfen.

    Gruss
    Elland

  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 27. Juni 2007 um 05:57
    • #2

    Wie wärs mit Iteratoren?

    *plantsch*

  • Elland
    2
    Elland
    Mitglied
    Punkte
    35
    Beiträge
    5
    • 27. Juni 2007 um 11:49
    • #3

    Die Frage ist nicht wie ich die beiden Collections vergleiche, dass sollte machbar sein. Das einzige was ich mich Frage ist wie die Collections aufgebaut sind.

    # ( ( 3 ) # ( 5 9 ) #( 12 34 7 8)) wäre dies so sinnig?

    Jörg

  • JohnFoo
    20
    JohnFoo
    Mitglied
    Reaktionen
    61
    Punkte
    4.231
    Beiträge
    761
    • 27. Juni 2007 um 12:23
    • #4

    Tolle Grafik hihi .. und was soll man darunter verstehen? Kommt auf die Notation drauf an wie du's hinschreiben möchtest.

    Wenn du die zwei lediglich vergleichen dann is ja eh einfach, läuft ab wie das durchlaufen eines Baumes nur dass du beide gleichzeitig (und gleich) durchläufst und die Knoten jeweils vergleichst.

  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 27. Juni 2007 um 16:08
    • #5
    Zitat von Elland

    Das einzige was ich mich Frage ist wie die Collections aufgebaut sind.


    Wenn du weißt, wie du zwei "flache" Collections vergleichst, dann wendest du dieses Wissen einfach rekursiv auf die Kinder an, und schon kannst du auch beliebig verschachtelte Collections vergleichen.

    Zitat von JohnFoo

    Tolle Grafik hihi .. und was soll man darunter verstehen?


    Das sind geschachtelte Arrays in Smalltalk-Syntax. Java-Gurus müssen sowas nicht lesen können.

    *plantsch*

  • a9bejo
    21
    a9bejo
    Mitglied
    Reaktionen
    42
    Punkte
    4.697
    Beiträge
    913
    • 27. Juni 2007 um 23:23
    • #6
    Zitat von Elland

    Die Frage ist nicht wie ich die beiden Collections vergleiche, dass sollte machbar sein. Das einzige was ich mich Frage ist wie die Collections aufgebaut sind.

    # ( ( 3 ) # ( 5 9 ) #( 12 34 7 8)) wäre dies so sinnig?

    Jörg

    Weil Deine Frage so noch nicht beantwortet wurde: Ja, so in etwa
    koennten die Collections aufgebaut sein: Listen, deren Kinder
    entweder weitere Listen (= subknoten) oder atomare Werte (=blaetter)
    enthalten koennen, bilden einen Baum und sind fuer Deine Aufgabe
    geeignet:

    (list 'erstesElementEbene1 'zweitesElementEbene1 (list 'erstesElementEbene2 'zweitesElementEbene2 (list 'erstesElementEbene3) ) 'viertesElementEbene1 )


    Und auch wenn Du nicht danach gefragt hast: Ein Algorithmus zum
    Vergleichen koennte z.B. wie folgt aussehen:

    Code
    #! Lisp
    (define-function compare (a b) 
      (conditions 
       ;; wenn a und b beides leere listen sind, sind sie natuerlich gleich:
       ((and (not a) (not b)) true)
    
       ;;wenn a und b listen sind, dann sind sie gleich wenn
       ;;1.) die ersten beiden elemente dieser beiden listen  
       ;;gleich sind, und 2.) wenn die beiden rest-listen 
       ;;ebenfalls gleich sind:
       ((and (is-a-collection? a)  (is-a-collection? b)) 
    	(and 
    	 (compare (first-element-from a) (first-element-from b)) 
    	 (compare (other-elements-from a) (other-elements-from b)) ) )
    
    
       ;;ansonsten vergleiche einfach die beiden atomaren elemente miteinander:
       ((= a b))))
    Alles anzeigen

    lg, Benjamin Ferrari, bookworm.at

  • Elland
    2
    Elland
    Mitglied
    Punkte
    35
    Beiträge
    5
    • 1. Juli 2007 um 17:20
    • #7

    Super vielen Dank für Deine ausgiebige Antwort, hat mir doch sehr geholfen.

    Elland

  • Maximilian Rupp 27. Dezember 2024 um 12:05

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 2 Besucher

Rechtliches

Impressum

Datenschutzerklärung