Larghezza Albero con BFS
Buongiorno a tutti!
Ho sempre un gran stimolo a scrivere qui
Volevo sottoporre il seguente esercizio per calcolare la larghezza di un albero radicato.
Si vuole "adattare" una visita BFS (quindi utilizzata generalmente nei Grafi).
Si ricorda che la larghezza di un albero ordinato è il numero massimo di nodi che stanno tutti al medesimo livello.
Bisogna calcolare in modo efficente tale larghezza di un albero T di n nodi.
Ho sempre un gran stimolo a scrivere qui

Volevo sottoporre il seguente esercizio per calcolare la larghezza di un albero radicato.
Si vuole "adattare" una visita BFS (quindi utilizzata generalmente nei Grafi).
Si ricorda che la larghezza di un albero ordinato è il numero massimo di nodi che stanno tutti al medesimo livello.
Bisogna calcolare in modo efficente tale larghezza di un albero T di n nodi.
Risposte
Bisogna assumere di valutare il grafo a partire da una radice r
Vabè, a parte la variabile max che non serve a nulla, questa soluzione non mi convince...
interger LARGHEZZA(GRAPH G, NODE r)
integer max <-- 0
QUEUE S <-- Queue()
S.enqueue(r)
integer[] dist <-- new integer[1 . . G.n]
integer[] count <-- new integer[1 .. G.n]
foreach u € G.V() - {r} do
dist <-- -1
count <-- 0
dist[r] <-- 0
while not S.isEmpty() do
NODE u <-- S.dequeue()
foreach v € G.adj(u) do
if dist[v] < 0 then
dist[v] <-- dist + 1
count[dist[v]] <-- count[dist[v]] + 1
S.enqueue(v)
return max(count, n)
Vabè, a parte la variabile max che non serve a nulla, questa soluzione non mi convince...
