Albero binario "abbastanza" bilanciato [RISOLTO]
Abbiamo un albero binario: per ogni nodo $t$ abbiamo una funzione $c(t)$ (che non è implementata ma da realizzare) che fornisce il numero di nodi.
Ossia $c(t)$ da il numero di nodi contenuti nel sottoalbero radicato in $t$ sapendo che $c(NIL) = 0$.
Sappiamo che è abbastanza bilanciato se rispetta per ogni nodo $t$:
c(t.left)<=c(t.right)*2+1 e che c(t.right)<= c(t.left)*2+1
Trovare il miglior algoritmo che prende in input un nodo $t$ e verifica se l'albero radicato in $t$ è abbastanza bilanciato (seguendo la suddetta formula data)
Ossia $c(t)$ da il numero di nodi contenuti nel sottoalbero radicato in $t$ sapendo che $c(NIL) = 0$.
Sappiamo che è abbastanza bilanciato se rispetta per ogni nodo $t$:
c(t.left)<=c(t.right)*2+1 e che c(t.right)<= c(t.left)*2+1
Trovare il miglior algoritmo che prende in input un nodo $t$ e verifica se l'albero radicato in $t$ è abbastanza bilanciato (seguendo la suddetta formula data)
Risposte
È O(n). Non fai altro che calcoli costanti e chiamate ricorsive nel tuo codice e visiti ogni nodo una singola volta.