Sei sulla pagina 1di 2

Examen de SP - Elementos de Programacin y Estructuras de Datos - Lunes 15 01 - 2007

1. (30 pts) Dada una torre que contiene elementos de dos tipos, se necesita organizar los elementos de la misma, de forma tal
que siempre existan elementos intercalados. Se tiene como condicion de manejo que jamas se ingresa tres elementos del mismo
tipo consecutivamente. La torre esta implementada en base a una pila, realice el (los) metodo(s) necesario(s) que permitan
ingresar elementos a la torre de acuerdo a las especificaciones descritas.
class Torre abstract class T
{
{
private Pila<T> p;
private boolean sePuede; abstract public boolean mismo(T e);
public Torre()
}
{
p = new Pila<T>();
sePuede = true;
class T1 extends T
}
public String insertar(T elem) {
{ public boolean mismo( T e)
String res = El elemento fue ingresado con exito;
if(p.vacia()) {
p.push(elem); return (e instanceof T1);
else
if(pila.top().mismo(elem)) }
res = insertarDoble(elem); }
else
res = insertarSimple(elem);
return res; class T2 extends T
}
private String insertarDoble(T elem) {
{ public boolean mismo( T e)
String res = El elemento fue ingresado con exito;
if(sePuede) {
{ return (e instanceof T2);
p.push(elem);
sePuede = false; }
} }
else
{
res = El elemento es el tercero de este tipo,;
res = res + no se ingreso....;
}
return res;
}
private String insertarSimple(T elem)
{
if(sePuede)
p.push(elem);
else
{
T aux = p.pop();
p.push(elem);
p.push(aux);
sePuede = false;
}
return El elemento fue ingresado con exito;
}
}
2. (30 pts.) Dados dos arboles binarios de busqueda, realiza el(los) mtodos necesarios que permita(n)
fusionar los dos arboles en uno, manteniendo la cualidad en el arbol resultante de ser un arbol binario de
busqueda. Tu respuesta debe ser eficiente.

public void fusionar(ArbolBB<T> a, ArbolBB<T> b)


{
if( ! b.vacia() )
{
a.insertar( b.raiz());
fusionar( a, b.izq());
fusionar( a, b.der());
}
}

3. (30 pts) Elige las aseveraciones que son correctas sintactica y semanticamente, cuidado una respuesta
mala anula una buena. Para ello considera el siguiente contexto:
Pila<Integer> p = new Pila<Integer>(); Cola<integer> c = new Cola<Integer>();
ListaSE<T> m = new ListaSE<T>();
ArbolBB abb = new ArbolBB(); ArbolBin ab = new ArbolBin();
ArbolN an = new ArbolN(5);

1. p.push(c.decolar()); SI: Ya que las dos estructuras tiene el mismo tipo de


dato
2. p.push(m.getDato()); NO: Porque un T no necesariamente es un Integer
3. m.add(new T()); SI: Porque se esta insertando un objeto de la clase T,
y la lista es para contener elementos de la clase T
4. boolean res = abb.buscar(new Integer SI: Porque un Integer es un object y ademas
(3)); comparable
5. Si ArbolN aux = an.darSubarbol();. El NO: Porque el grado del arbol an es 5, y por
grado de aux es 4 propagacion de la creacion sus subarboles tambien
son de grado 5
6. p.encolar(p.top()); NO: Porque p es una pila y no se puede encolar en
una pila
7. ab.inorden(); SI: Los recorridos inroden, posorden y preorden son
operaciones ESTANDARES sobre arboles binarios
8. an.posorden(); NO: Porque este recorrido no es una operacion
estandar sobre cualquier arbol
9. m.preorden(); NO: Porque este recorrido no es un operacion
estandar sobre una lista
10. c.encolart(new T()); NO: Porque un T no necesariamente es un Integer
11. m.insertarEn(new T(), 7); SI: Porque el insertar un elemento en una posicion es
una operacion valida, ademas el elemento que se
desea insertar es consistente con lo que almacena m.
12. ab.insertar(new T()); SI: Porque un objeto de la clase T es un Object
13. an.insertar(c.pop()); NO: Porque c es una cola y no se puede pop en una
cola

Potrebbero piacerti anche