Ho molti problemi a scrivere funzioni ricorsive legate agli alberi. Non posso usare google per queste funzioni perché non sono generali e non potrò usare google in un'impostazione di esame!
C'è qualche "trucco" per riuscire a creare un algoritmo / scrivere psuedocode con successo per le funzioni ricorsive? C'è un modo in cui dovrei pensare / avvicinarmi a questo?
Esempio : scrivi una funzione ricorsiva che determina se un dato albero binario ha a struttura coerente con un albero AVL valido.
Soluzione prevista :
template <typename Type>
bool is_avl (const Binary_node<Type> * tree) {
if (tree == NULL) {
return true;
}
return is_bst (tree)
&& is_avl (tree->left())
&& is_avl (tree->right())
&& std::abs(height(tree->left()) - height(tree->right())) <= 1;
}