This is an old revision of the document!


Abstract Datatypes

1. Definiți constructori pentru un arbore binar ce poate conține ca elemente numere întregi.

2. Definiți axiome pentru următorii operatori:

  • size : BTree → Integer (numărul total de valori din arbore)
  • height : BTree → Integer (numărul de nivele al arborelui)
  • mirror : BTree → BTree (arborele oglindit pe verticală, i.e. pentru orice nod, copilul stâng devine copilul drept și vice-versa)
  • flatten : BTree → List (lista cu toate elementele din arbore; observați că există mai multe ordini posibile)

3. Definiți constructori pentru o coadă (tip FIFO) ce poate conține elemente de un tip arbitrar E.

4. Definiți axiome pentru următorii operatori pe coadă:

  • deque : FIFO → FIFO (coada fără primul element adăugat, i.e. cel mai vechi)
  • top : FIFO → E (primul, cel mai vechi adăugat, element)
  • length : FIFO → Integer (numărul de elemente din coadă)

5. Definiți constructori pentru un Map cu chei de tip K și valori de tip V.

6. Definiți axiome pentru următorii operatori pe Map:

  • get : Map × K → V (elementul asociat cu o cheie dată)
  • update : Map × K × V → Map (un Map cu o nouă asociere cheie:element)
  • exists : Map × K → Bool (verifică dacă cheia dată are o valoare asociată)
  • delete : Map × K → Map (șterge cheia și valoarea asociată)