Tecnica di visita per grafi e alberi che esplora i rami fino in fondo prima di retrocedere.
Il Depth-First Search è un algoritmo di esplorazione che si applica sia agli alberi sia ai grafi. L'idea è quella di partire da un nodo e visitare i figli il più profondamente possibile, tornando indietro solo quando non ci sono più nodi da esplorare lungo il percorso corrente.
Utilizza DFS quando:
Tipo | Descrizione |
---|---|
Ricorsiva | Utilizza lo stack chiamate della funzione per tenere traccia dei nodi |
Iterativa | Usa uno stack esplicito per simulare la ricorsione |
class Node: def __init__(self, val, left=None, right=None): self.val = val self.left = left self.right = right def dfs(node): if not node: return print(node.val) dfs(node.left) dfs(node.right)
✅ Complessità:
O(n)
dove n
è il numero di nodiO(h)
con h
altezza dell'albero o dimensione massima dello stackNome | Difficoltà | Pattern | Link |
---|---|---|---|
Binary Tree Preorder Traversal | Easy | Ricorsiva | Leetcode #144 |
Number of Islands | Medium | Ricorsiva | Leetcode #200 |
Clone Graph | Medium | Iterativa | Leetcode #133 |
Ricevi tips settimanali, nuovi pattern e aggiornamenti esclusivi per migliorare costantemente le tue skills algoritmiche
No spam, unsubscribe anytime. Privacy policy compliant.