3- Árboles3.3 Árboles binarios

Implementación de árboles binarios en ADA (.ads) 
      generic
        type elemento is private;
      package arbolesbin is
        type arbin is limited private;
        procedure creaVacio(a:out arbin);
        -- Post: a=aVacío
        procedure enraiza(e: in elemento; ai,ad:in arbin; a:out arbin);
        -- Post: a=enraizar(e,ai,ad)
        -- NO COPIA ai NI ad
        function raiz(a:arbin) return elemento;
        -- Pre: not(vacío?(a))
        -- Post: raiz(a)=raíz(a)
        procedure subIzq(a:in arbin; ai:out arbin);
        -- Pre: not(vacío?(a))
        -- Post: ai=subIzq(a)
        -- NO DUPLICA ai
        procedure subDer(a:in arbin; ad:out arbin);
        -- Pre: not(vacío?(a))
        -- Post: ad=subDer(a)
        -- NO DUPLICA ad
        function esVacio(a:arbin) return boolean;
        -- Post: esVacio(a)=vacío?(a)
        function altura(a:arbin) return integer;
        -- Pre: not(vacío?(a))
        -- Post: altura(a)=altura(a)
        procedure asignar(nuevo:out arbin; viejo:in arbin);
        -- Duplica la representación del árbol viejo guardándolo en 
        -- nuevo.
        procedure liberar(a:in out arbin);
        --  Libera la memoria dinámica accesible desde a, quedando a 
        -- vacío.

        private

          type nodo;
          type arbin is access nodo;
          type nodo is
            record
               dato:elemento;
               izq,der:arbin;
               altura:integer;
            end record;
      end arbolesbin; 


  E.Mayordomo y K. Urzelai 
elvira at posta.unizar.es
karmelo at posta.unizar.es

Fecha de actualización: 5-9-01