Ho un gerarchica dei dati che va come questo:Come costruire un albero non binario con o senza ricorsione?
+----------------------+-------+
| name | depth |
+----------------------+-------+
| ELECTRONICS | 0 |
| TELEVISIONS | 1 |
| TUBE | 2 |
| LCD | 2 |
| PLASMA | 2 |
| PORTABLE ELECTRONICS | 1 |
| MP3 PLAYERS | 2 |
| FLASH | 3 |
| CD PLAYERS | 2 |
| 2 WAY RADIOS | 2 |
+----------------------+-------+
TUBE, LCD e Plasma sono figli di televisori. FLASH è figlio di Lettori MP3. LETTORI MP3, LETTORI CD e RADIO A 2 VIE sono i figli di ELETTRONICA PORTATILE. Ottieni il trapano.
Ora, ho un nodo struttura che contiene il suo ID e i suoi figli, e così via, come per costruire un albero. Come questo:
struct Node
{
int id;
list<Node*> children;
}
Ogni elemento è identificato da un ID, che è il numero di riga (ELETTRONICA = 0, televisori = 1, e così via), quindi è facile per scoprire chi sono i figli di un nodo.
Questo è l'albero che sto cercando di costruire. Questo albero non è binario, come puoi vedere. Quindi applicare la ricorsione non sembra un'idea facile. Correggimi se sbaglio.
Quindi, come posso eseguire questo? Aiuto!
La ricorsione facilita il percorso in cui è necessario esplorare più di 1 percorso. Quindi 2 o più rami rendono la ricorsione la scelta facile. L'approccio alternativo (iterazione) richiede di tenere traccia manualmente dei tuoi progressi (ad esempio, il lavoro che lo stack sta facendo nella versione ricorsiva). Ma per questa situazione non è necessaria la ricorsione. –