Esercizi

  1. Scrivere una funzione ricorsiva che stampa tutti i valori di una LinkedList in ordine inverso in tempo lineare.
  2. Scrivere una funzione search ricorsiva che decide se un elemento passato in input è presente in un albero binario.
  3. Scrivere una funzione size ricorsiva che calcola il numero di nodi in un albero binario.
  4. Scrivere la funzione preorder in modo iterativo e non ricorsivo. La funzione deve essere lineare.
  5. Scrivere la funzione postorder in modo iterativo e non ricorsivo. La funzione deve essere lineare.
  6. Scrivere la funzione inorder in modo iterativo e non ricorsivo. La funzione deve essere lineare.
  7. Scrivere una funzione ricorsiva che calcola l’altezza di un albero binario in tempo lineare.
  8. Dato un albero binario, scrivere una funzione ricorsiva con complessità temporale lineare che stampa la chiave del nodo x se il sottoalbero radicato in x ha altezza maggiore di 5, per ogni nodo x.
  9. Dato un albero binario, scrivere una funzione ricorsiva con complessità temporale lineare che stampa la chiave del nodo x se il livello di x è uguale all’altezza del sottoalbero radicato in x (modificare l’esercizio precedente), per ogni nodo x.
  10. Dato un albero binario, scrivere una funzione ricorsiva con complessità temporale lineare che stampa la chiave del nodo x se la somma dele chiavi nel sottoalbero radicato in x è multiplo di 3 (modificare l’esercizio precedente), per ogni nodo x.
  11. Dato un albero binario, scrivere una funzione ricorsiva con complessità temporale lineare che stampa la chiave del nodo x se la media delle chiavi nel sottoalbero radicato in x è maggiore di 7, per ogni nodo x.
  12. Scrivere una classe per memorizzare alberi non necessariamente binari e ripetere gli ultimi cinque esercizi senza l’assunzione che l’albero sia binario.
Next Section - Vocabolario e Definizioni