Jump to content

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


Recommended Posts

robertosalemi
Posted

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.
 
  • 4 months later...
Posted

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);

 

 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...