Larghezza Albero con BFS

Giova411
Buongiorno a tutti!
Ho sempre un gran stimolo a scrivere qui :smt023

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
Giova411
Bisogna assumere di valutare il grafo a partire da una radice r
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... :smt012

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.