Un dendroid è un albero che ha le seguenti proprietà:
* È connesso.
* È aciclico.
* Ha un singolo nodo radice.
* Tutti i suoi nodi non root hanno esattamente un nodo genitore.
I dendroidi vengono spesso utilizzati per rappresentare strutture di dati gerarchiche, come file system o gerarchie organizzative. Vengono utilizzati anche nella computer grafica per rappresentare oggetti con strutture ramificate, come alberi o piante.
I dendroidi possono essere rappresentati utilizzando una varietà di strutture dati, inclusi array, elenchi collegati e alberi. La rappresentazione più comune è la lista di adiacenza, che è un array di liste, dove ciascuna lista contiene gli indici dei nodi figli del corrispondente nodo genitore.
Per trovare un percorso da un nodo alla sua radice in un dendroid, si può semplicemente attraversare l'albero, seguendo i puntatori principali, fino a raggiungere il nodo radice. La lunghezza del percorso è uguale al numero di archi nel percorso, che è uguale al numero di antenati del nodo.
L'altezza di un dendroid è la lunghezza del percorso più lungo da un nodo alla sua radice. Il diametro di un dendroid è il massimo delle altezze dei suoi sottoalberi.
I dendroidi possono essere utilizzati per risolvere una varietà di problemi in informatica, tra cui:
* Trovare il più basso antenato comune di due nodi.
* Trovare il percorso da un nodo alla sua radice.
* Trovare l'altezza e il diametro di un albero.
* Generazione di un dendrogramma casuale.
I dendroidi sono una struttura dati versatile ed efficiente che può essere utilizzata per rappresentare una varietà di strutture dati gerarchiche. Sono ampiamente utilizzati nell'informatica e hanno una ricca teoria matematica.