ARBOL-DATOS

public class Arbol
{
private String nombre;
private double nota;

public CDatos(){}
public CDatos(String nom, double n)
{
nombre=nom;
nota=n;
}

public void asignarNombre(String nom)
{
nombre=nom;
}

public String obtenerNombre()
{
return nombre;
}

public void asignarNota(double n)
{
nota=n;
}

public double obtenerNota()
{
return nota;
}
}

ARBOL BINARIO

public class CArbolBinarioDeBusqueda extends CArbolBinB
{
public int comparar(Object obj1, Object obj2)
{
String str1=new String(((CDatos)obj1).obtenerNombre());
String str2=new String(((CDatos)obj2).obtenerNombre());
return str1.compareTo(str2);
}

public void procesar(Object obj)
{
String nombre=new String(((CDatos)obj).obtenerNombre());
Double nota=((CDatos)obj).obtenerNota();
System.out.println(nombre+" "+nota);
}

public void visitarInorden()
{
inorden(null, true);
}

public void visitarPosorden()
{
posorden(null, true);
}

public void visitarPreorden()
{
preorden(null, true);
}
}

ARBOL GENERICO

public class Arboles {

public Arboles() {
System.out.println("Un árbol genérico");
}

public Arboles(String tipo) {
System.out.println("Un árbol tipo " + tipo);
}

public Arboles(int altura) {
System.out.println("Un árbol de " + altura + " metros");
}

public Arboles(int altura,String tipo) {
System.out.println("Un " + tipo + " de " + altura + " metros");
}

public static void main(String args[]) {
Arboles arbol1 = new Arboles(4);
Arboles arbol2 = new Arboles("Roble");
Arboles arbol3 = new Arboles();
Arboles arbol4 = new Arboles(5,"Pino");
}
}

Diagrama de flujo

Pseudocodigo Pila vacia

//mira si la pila esta vacia y deja un mensaje
proceso Pila

Leer MAX

tope <- MAX
Mientras Pila(tope) = "" Hacer
tope <- tope - 1
FinMientras

Si tope = 0 Entonces
Escribir pila,vacia
Sino

Leer N
Para N Hasta 0 Hacer
Pila(tope) <- ""
tope <- tope - 1
FinPara
FinSi
FinProceso