Universidad Autónoma “Tomás Frías” 1 Ejemplos II – ing. de sistemas – Estructura de datos Ejemplos II Aquí encontraras las respuestas del 3er parcial y un poquito más class Nodo { int info; Nodo izda; Nodo dcha; public Nodo(int a){ info=a; izda=dcha=null; } } import java.util.Scanner; public class Prueba { public static void main(String[] args) { Arbol a=new Arbol(); Scanner cs=new Scanner(System.in); int n=cs.nextInt(); while(n--!=0){ a.insertar(cs.nextInt()); } System.out.println("en orden es:"); a.inOrden(a.raiz); System.out.println("\nen pre orden es:"); a.pre(a.raiz); System.out.println("\nen post orden es:"); a.post(a.raiz); System.out.println("\nMostrando por niveles: "); a.Mostra_niveles(); System.out.println("\nMostrando hojas por niveles: "); for(int i=0;i<a.profundidad(a.raiz);i++){ System.out.print("Nivel "+i+" .- "); a.mostrarNH(a.raiz, i); System.out.println(); } System.out.println("\nLa cantida de nos en el arbol son: "+a.contar(a.raiz)); System.out.println("\ningrese el sub-arbol para contar sus nodos"); a.contar(a.raiz, cs.nextInt()); } } Univ. Huallpa Quentasi Juan Carlos Página 1 Universidad Autónoma “Tomás Frías” 2 Ejemplos II – ing. de sistemas – Estructura de datos class Arbol { Nodo raiz; void insertar(int a){ Nodo aux=new Nodo(a); if(raiz==null) raiz=aux; else { Nodo p,q; p=q=raiz; while(p!=null) { q=p; if(a<p.info) p=p.izda; else p=p.dcha; } if(a<q.info) q.izda=aux; else q.dcha=aux; } } void inOrden(Nodo r){ if(r!=null){ inOrden(r.izda); System.out.print(r.info+" "); inOrden(r.dcha); } } void post(Nodo r){ if(r!=null){ post(r.izda); post(r.dcha); System.out.print(r.info+" "); } } void pre(Nodo r){ if(r!=null){ System.out.print(r.info+" "); pre(r.izda); pre(r.dcha); } } void mostrarNH(Nodo x,int n){ if(x!=null){ if(0==n){ if(esHoja(x)) System.out.print(x.info+" return; } mostrarNH(x.dcha, n-1); mostrarNH(x.izda, n-1); } "); } void mostrarN(Nodo x,int n){ Univ. Huallpa Quentasi Juan Carlos Página 2 Universidad Autónoma “Tomás Frías” 3 Ejemplos II – ing. de sistemas – Estructura de datos if(x!=null){ if(0==n){ System.out.print(x.info+" return; } mostrarN(x.dcha, n-1); mostrarN(x.izda, n-1); } "); } boolean esHoja(Nodo x) { if(x.dcha==null&&x.izda==null)return true; return false; } int profundidad(Nodo r) { if(r!=null) { int i=1,d=1; if(r.izda==null&&r.dcha==null) return 1; if(r.izda!=null) i=i+profundidad(r.izda); if(r.dcha!=null) d=d+profundidad(r.dcha); if(i>d) return i; else return d; } else return 0; } void Mostra_niveles(){ int t=profundidad(raiz); for(int i=0;i<t;i++){ System.out.print("nivel "+i+".- "); mostrarN(raiz, i); System.out.println(); } } int contar(Nodo x){ if(x==null)return 0; return 1+contar(x.izda)+contar(x.dcha); } void contar(Nodo x,int a){ if(x!=null){ if(x.info==a){ System.out.println("son "+contar(x)+" nodos en "+a); } contar(x.dcha,a); contar(x.izda,a); } } } Univ. Huallpa Quentasi Juan Carlos Página 3