Ejemplos II - WordPress.com

Anuncio
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
Descargar