arboles generales

Anuncio
Huallpa Quentasi Juan Carlos 1
ARBOLES GENERALES
IMPLEMENTACION DE ARBOLES GENERALES
Nodo Raiz
Enlace hijo
info
Enlace hermano
class Raiz {
int info;
Raiz hermano;
Raiz hijo;
public Raiz(int x) {
info=x;
hermano=null;
hijo=null;
}
}
class Arbol {
Raiz raiz;
public Arbol(int a) {
raiz=new Raiz(a);
}
void insertar(int padre,int hijo){
Raiz []p=new Raiz[1];//direccion de memeria
Buscar(raiz, p, padre);
if(p[0]!=null){
Raiz x=new Raiz(hijo);
if(p[0].hijo==null){
p[0].hijo=x;
}
else{
p[0]=p[0].hijo;
while(p[0].hermano!=null){
p[0]=p[0].hermano;
}
p[0].hermano=x;
}
}
else{
Raiz aux=raiz;
while(aux.hermano!=null)
aux=aux.hermano;
Raiz pa=new Raiz(padre);
Raiz hi=new Raiz(hijo);
pa.hijo=hi;
aux.hermano=pa;
}
}
Huallpa Quentasi Juan Carlos 2
ARBOLES GENERALES
//el nodo que se busca se almacenara en la variable puntero[].
void Buscar(Raiz padre,Raiz []puntero,int n){
if(padre!=null){
if(padre.info==n){
puntero[0]=padre;
return ;
}
Buscar(padre.hijo, puntero, n);
Buscar(padre.hermano, puntero, n);
}
}
int profundidad(Raiz r) {
if(r!=null) {
int i=1,d=1;
if(r.hijo==null&&r.hermano==null)
return 1;
if(r.hijo!=null)
i=i+profundidad(r.hijo);
if(r.hermano!=null)
d=d+profundidad(r.hermano); //no importa
return i;
}
else
return 0;
}
void Niveles(Raiz x, int c,int n){
if(x!=null){
if(c==n){
System.out.print(x.info+" ");
}
Niveles(x.hijo,c+1,n);
Niveles(x.hermano,c,n);
}
}
void Mos_nivel(){
int aux=profundidad(raiz);
for(int i=1;i<=aux;i++){
Niveles(raiz,1,i);
System.out.println();
}
}
}
mucho
Huallpa Quentasi Juan Carlos 3
ARBOLES GENERALES
public class Prueba {
/**
* Implementado por Carlos huallpa
*/
public static void main(String[] args) {
Arbol a=new Arbol(3);
a.insertar(3,6);
a.insertar(3,7);
a.insertar(6,9);
a.insertar(7,4);
a.insertar(7,8);
a.insertar(7,5);
a.insertar(5,2);
a.insertar(5,10);
a.insertar(9,12);
a.insertar(9,11);
System.out.println("La profundidad del arbol es =
"+a.profundidad(a.raiz));
System.out.println();
a.Mos_nivel();
System.out.println();
mostrarin(a.raiz);
}
static void mostrarin(Raiz padre){
if(padre!=null){
mostrarin(padre.hijo);
System.out.print(padre.info+" ");
mostrarin(padre.hermano);
}
}
}
La utilización de esta clase de arboles no es diferente al de
arboles binarios solo hay que tomar en cuenta la forma de inserción
para poder hacer cualquier ejercicio.
Esta Implementación es Propia así que si le encontran alguna falla
me lo dicen para poder corregirlo.
La parte de la tarea 7, ejercicio h (mostrar por niveles) ya esta
resulta en esta implementación, la cual no valdrá si me la
presentan ya que la de ustedes son arboles implementados con
multilistas, pero si me presentan toda su tarea a base de esta
implementación si valdrá.
Descargar