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á.