1
Fork 0
mirror of https://github.com/Steffo99/appunti-magistrali.git synced 2024-11-24 19:24:19 +00:00
appunti-steffo/2 - Algoritmi e strutture dati/1 - Appunti/17 - Depth-first search.md

32 lines
935 B
Markdown
Raw Normal View History

# Depth-First Search
La _depth-first search_ è un algoritmo che visita **tutti i sottoalberi di un figlio** prima di passare ad un altro sfruttando la natura ricorsiva degli alberi.
## Funzionamento
Ci sono diverse versioni della depth-first search: ognuna visita la radice in un momento diverso.
### DFS previsita (pre-order)
La _DFS pre-visita_ visita la **radice per prima**, poi tutti i sottoalberi formati dai figli uno dopo l'altro.
> 1. __Visita radice__
> 2. dfs_pre_order(figlio1)
> 3. dfs_pre_order(figlio2)
### Postvisita (post-order)
La _DFS postvisita_ visita prima tutti i sottoalberi dei figli, e **alla fine la radice**.
> 1. dfs_post_order(figlio1)
> 2. dfs_post_order(figlio2)
> 3. __Visita radice__
### Invisita (in-order)
La _DFS invisita_ visita **un certo numero di figli**, poi la radice, e infine i figli restanti.
> 1. dfs_in_order(figlio1, 1)
> 2. __Visita radice__
> 3. dfs_in_order(figlio2, 1)