1
Fork 0
mirror of https://github.com/Steffo99/unisteffo.git synced 2024-11-23 00:14:21 +00:00
triennale-appunti-steffo/public/materials/year1/algoritmi/17_DepthFirstSearch.md

32 lines
935 B
Markdown
Raw Normal View History

2022-02-03 02:15:39 +00:00
# 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)