Design pattern per alberi isomorfi

4

Voglio creare una struttura dati per lavorare con un albero isomorfo. Non cerco un "algoritmo" o metodi per verificare se due o più alberi sono isomorfi a vicenda. Solo per creare vari alberi con la stessa struttura.

Esempio:

  2 - - - - - - - 'a' - - - - - - - 3.5 
 / \              / \               / \
3   3           'f' 'y'           1.0 3.1
   / \              / \               / \
  4   7           'e' 'f'           2.3 7.7

Il primo "livello" o albero è "l'albero naturale" (un albero con numeri naturali), il secondo è l'albero dei caratteri e il terzo è l'albero galleggiante.

La struttura dati ha un metodo o un iteratore per attraversare l'albero e per effettuare diverse operazioni con i suoi valori. Queste operazioni potrebbero cambiare il valore dei nodi, ma mai la sua struttura (prima creo la struttura e poi configuro l'albero con i suoi diversi livelli). In tal caso aggiungo un nuovo nodo, questo sarebbe applicato a ogni livello.

Quale modello di design noto si adatta a questa descrizione o è correlato ad esso?

    
posta Peregring-lk 11.12.2012 - 14:15
fonte

1 risposta

6

Se i tuoi alberi sono isomorfi in linea di principio, non ha assolutamente senso mantenere in realtà tre alberi paralleli - questo è solo uno spreco di indicatori e cicli del processore. dovresti invece definire un tipo composito che trattiene tutti gli elementi che vuoi mantenere in parallelo, e costruisci un albero contenente tali nodi compositi. Ricorda, in che modo accedere o presentare i tuoi dati ad altri moduli o utenti può essere completamente indipendente dalla struttura dei dati effettiva.

    
risposta data 11.12.2012 - 14:28
fonte

Leggi altre domande sui tag