Vai al contenuto
PLC Forum


[C#] Ordinare un livello specifico di un custom tree


robertosalemi

Messaggi consigliati

Ciao, ho un classe che simula un tree, così composto:
[code]

MainNode
   - SubNode Level 1
      - SubNode Level 2
         -SubNode Level 3
           - Item 1
           - Item 2
           - Item 3
[/code]

Ho la necessità di ordinare solo i children del livello 3, immagino che devo ciclare ricorsivamente l'albero fino a quel livello e poi ordinarli, ma non ne sto venendo a capo.
Qualche suggerimento?

Grazie.
 
Link al commento
Condividi su altri siti

  • 4 months later...

Ciao Roberto,

non so se sei ancora alla ricerca di una soluzione, ma voglio ugualmente provare a risolvere il problema.

 

Tutto ovviamente dipende dall'implementazione di albero che stai utilizzando. Ad esempio, supponiamo che la struttura sia questa:

 

public class Nodo
{
  IEnumerable<Items> ElementiDelNodo {get; set;}
  IEnumerable<Nodo> NodiSottostanti{ get; set;}
}

(quindi la radice è un nodo che contiene altri nodi che a loro volta contengono altri nodi e così via..)

 

Potresti creare una funzione che percorre l'albero conservando in un parametro il livello, in questo modo:

void OrdinaNodo(Nodo nodo, int livello) {
  if(livello == 3){
     // Ordina gli elementi del nodo
  } else {
    livello++;
    foreach(var n in nodo.NodiSottostanti)
    {
      OrdinaNodo(n, livello);
    }
  }
}

 

 

Quindi, per avviare il processo di ordinamento:

var radice = new Nodo();
OrdinaNodo(radice, 1);

 

 

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...