Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [c] Alberi n-ari

    Devo implementare un albero di questo tipo:

    ----B-C-D
    A-
    .......-C-D
    ----B-
    .......-C-D

    Dove leggo un ramo alla volta e ogni ramo arriva sicuramente alla D, inoltre A è unico
    la lettura dei nodi(tenendo conto dell'esempio di sopra) è:

    A,B,C,D,C,D,B,C,D

    ogni nodo deve avere la struttura figlio-fratello, quindi due puntatori oltre al campo info
    quindi tenendo conto del esempio di sopra dovrebbe essere:
    A non ha fratelli (in ogni caso)
    A ha un figlio B
    B ha un fratello B(che ha a sua volta un figlio B che ha un figlio C) e un figlio C
    C ha un fratello C(che ha un figlio D) e un figlio D

    ora tenendo conto che il nodo è stato già letto e che i nodi vengono letti come detto prima ( ogni ramo arriva alla D e ogni ramo viene completato prima di passare al successivo)
    vorrei creare una funzione Inserisci a cui passo il nodo, già letto in precedenza, e la radice, mi inserisce il nodo e mi restituisce il puntatore alla radice.

    TipoNodo *Inserisci(TipoNodo *PTree,TipoNodo *Pnodo)
    dove PTree è il puntatore alla radice e Pnodo e il puntatore al nodo che devo inserire

    Chi mi aiuta gentilmente a fare questa funzione di inserimento tenendo conto delle regole citate sopra?

  2. #2
    La struttura che hai descritto non ha senso: chiami B, C e D più di un nodo. Vista così, è una semplice lista lineare A-B-C-D. Se quello che intendevi è questo:

    codice:
    A-+-B---C---D
      +-E-+-F---G
          +-H---I
    cosa effettivamente ottenibile con la struttura che hai descritto, la funzione di inserimento è molto simile a quello di un albero binario. Se l'albero è ordinato, bisognerebbe sapere la logica di ordinamento (o disporre di una callback che mi restituisce la comparazione dei valori tra due nodi), altrimenti, come nel caso della gerarchia directory, è sufficiente passare alla funzione di inserimento non il nodo radice ma il nodo genitore e inserire il figlio all'inizio della lista lineare dei fratelli.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.