C'è questa function per verificare se un albero è perfettamente bilanciato:
codice:
bilanciato(root, 0, -1)
function bilanciato(root, altezza, h_temp)
if(root = NULL) then
if(altezza = 0)
altezza=h_temp
else if(altezza != h_temp)
bilanciato := false
endif
bilanciato:=true
endif
if( (bilanciato(root->left, height, h_temp+1) )
bilanciato(root.right, altezza, h_temp+1)
endif
bilanciato:=false;
end
Vorrei sapere come funziona questa parte.
codice:
if( (bilanciato(root->left, height, h_temp+1) )
bilanciato(root.right, altezza, h_temp+1)
endif
Inizialmente supponiamo di avere la root che è != NULL, entra nel secondo if e cosa succede?