Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

ARBOLES N-ARIOS

No description
by

freddy arteaga

on 31 July 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of ARBOLES N-ARIOS

Un árbol n-ario es un estructura recursiva
en la que cada elemento puede tener cualquier numero de subárboles n-arios asociados. en este caso el orden de los arboles no es importante, en el sentido de que no es necesario saber cual es el primero o el ultimo, sino simplemente saber que es un subárbol.
ARBOLES N-ARIOS
RECORRIDOS
Conceptos
Jhonny P.
Freddy A.
Frank P.
katherine R.
Computacion Gráfica 1
Pre-orden
Post-orden
In-orden
Nodo
Raíz
Hoja
Camino
Rama
Altura
Peso
Operaciones
Inserción
Supresión
Búsqueda
public class Empresa
{
public Cargo buscarCargo (String nCargo)
{

return organigrama == null ? null :

organigrama.buscarCargo (nCargo);
}
}
public class Cargo
{

public Cargo buscarCargo (String nCargo)
{

if (nombreCargo.equalsIgnoreCase (nCargo))
{

return this;

}
else
{

for (int i=0; i < subalternos.size(); i++)
{

Cargo hijo = (cargo)subalternos.get(i);

Cargo temp = hijo.buscarCargo(nCargo);

if (temp != null)

return temp;

}

return null;
}

}
}
Metodo busqueda que permite localizar un cargo dado su nombre
public class Cargo
{

public int darPeso ()
{
if (esHoja ())

return 1;

else
{
int pesoAcum = 1;

for (int i = 0; i<subalternos.size();i++)
{

Cargo hijo = (cargo)subalternos.get(i);

pesoAcum += hijo.darpeso();
}
return pesoAcum;
}
}

public boolean esHoja ()
{
return subalternos.size()==0;
}

}
metodo de la clase Cargo
que calcula el peso del arbol

Referencias
Universidad de los Andes.
ESTRUCTURAS RECURSIVAS N-ARIAS
(en linea)<http://cupi2.uniandes.edu.co>
Jorge A. Villalobos S. .
Introduccion a las Estructuras de datos
. 1 Edicion. universidad de los andes, bogota colombia. Cap 4 pag 367
Arboles n-arios Java
. (en linea)<http://programaciongeneral.blogspot.com/2008/10/algoritmo-arboles-narios-java.html>
Arboles n-arios de busqueda
. leccion 18 (en linea)<http://es.scribd.com/doc/55499353/91/%C2%B4Arboles-n-arios>
public class Empresa
{

public Collection darListaEmpleados()
{
Collection Lista = new ArrayList ();

if (organigrama != null)
{
organigrama.darListaCargos (lista);
}
return Lista;

}
}
public class Cargo
{

public void darListaCargos (Collection Lista)
{
lista.add(nombreCargo);

for (int i=0; i<subalternos.size();i++)
{

cargo hijo = (cargo)subalternos.get(i);

hijo.darListaCargos(lista);
}
}
{
Algoritmo de recorrido en preorden
public class Empresa
{
public void crearCargo (String nCargo, int pago,
String nCargoJefe)
throws OrganigramaException
{
if (organigrama == null)
organigrama = new Cargo(nCargo, pago, null);

else
{
Cargo padre = buscarCargo (nCargoJefe);

if (padre == null)
throw new OrganigramaException ("cargo invalido");

Cargo nodo = buscarCargo (nCargo);

if (nodo != null)
throw new OrganigramaException ("cargo repetiedo");

padre.agregarCargo (nCargo, pago);

}
}
}
public class Cargo
{

public void agregarCargo (String nCargo, int pago)
throws OrganigramaException
{

Cargo subalterno = new Cargo (nCargo, pago, this);

subalternos.add(subalterno);

}
}
Algoritmo de insercion
Algoritmo de supresion
public class empresa
{

public void eliminarCargo (String nCargo)
throws OrganigramaException
{

if (organigrama == null)

throw new OrganigramaException ("cargo invalido");

if (organigrama.darNombreCargo().equalsIgnorecase (nCargo))
{

if (organigrama.esHoja() && organigrama.estaVacante())

organigrama = null;

else
throw new OrganigramaException ("imposible eliminar");
}

else
{

Cargo padre = organigrama.buscarJefe(nCargo);

if (padre==null)

throw new OrganigramaException ("cargo invalido");

padre.eliminarCargo(nCargo);
}
}
}
public class Cargo
{

public void eliminarCargo (String nCargo)
throws OrganigramaException
{

for (int i=0;i<subalternos.size();i++)
{

Cargo hijo = (cargo)subalternos.get(i);

if (hijo.darNombreCargo().equalsIgnoreCase (nCargo))
{

if (hijo.esHoja() && hijo.estaVacante())
{

subalternos.remove(i);

return;

}
else
throw new OrganigramaException ("no eliminable");
}
}
}
}
Full transcript