C'è un qualche tipo di è e non è! Ma dobbiamo perfezionare la nostra terminologia per capire cosa sta succedendo.
Abbiamo una gerarchia come questa nella teoria dei grafi, che scorre da generale in alto a più specifico / limitato in basso:
Grafico: una raccolta di nodi (vertici) e percorsi (connessioni tra i vertici)
Grafico connesso: una raccolta di nodi in cui è possibile selezionare qualsiasi nodo iniziale e raggiungere qualsiasi altro nodo finale. La scelta di inizio e fine è arbitraria.
Albero : un grafico connesso in cui esiste un solo e unico percorso tra qualsiasi nodo iniziale e qualsiasi nodo finale. Non ci sono percorsi alternativi che non tornano indietro (visita un nodo due volte).
Rooted Tree : Proprio come un albero, ma esiste un oggetto specifico scelto come root. Da questi definiamo anche le foglie, che è qualsiasi nodo che deve essere un nodo finale quando visitato dalla radice - senza visitare un nodo due volte una volta che si colpisce una foglia non si può andare da nessuna parte, e il percorso è terminato. Le foglie possono anche essere chiamate "vertici terminali".
Nota che anche un albero radice non ha necessariamente direzione - sei libero di iniziare da una foglia e procedere alla radice, ecc.
Se un albero è implementato come una struttura di dati a collegamento singolo, questo può essere considerato come un albero diretto se non è disponibile alcun collegamento di ritorno - una volta lasciato il root per uno dei nodi connessi, non è possibile torna indietro!
Ma una tale implementazione di un albero non è necessaria nella definizione di un albero! Si può implementare un albero con liste a doppio collegamento, in modo tale che si è liberi di fare cose come spostarsi verso la radice (spesso indicata come un genitore) o lontano dalla radice (Bambino).
Quindi, se si desidera una struttura dati in cui è possibile iniziare da una foglia e lavorare alla radice, è sufficiente una che supporti una funzione "visita genitore". È anche possibile definire banalmente un sistema che non consente lo spostamento da root (padre) a figlio, solo da figlio a genitore, e questo suona come quello che stai cercando. In pratica, rimuovi semplicemente la funzionalità "visita bambino".
Tuttavia, non sono a conoscenza di alcun nome formale per una tale struttura o di cosa utilizzerebbe una tale struttura. Gli alberi che partono da una radice sono utili, e quelli che consentono di camminare su e giù sono utili, ma quelli che consentono solo un movimento unidirezionale verso la radice è di tale utilità specializzata / limitata che dubito abbia un nome speciale riservato per essa . Ma suppongo che tutto sia possibile!
Dal punto di vista pratico, puoi facilmente implementarne uno da alberi diretti esistenti o alberi con radici dirette.