Otro codigo de Listas.
//clase Lista
import java.util.*;
public class Lista{
Object dato;
Nodo Inicio;
Nodo Ultimo;
Nodo P;
Nodo anterior;
public void Lista(){
Inicio = null;
Ultimo = null;
}
public boolean vacia(){
if(Inicio==null)
return true;
else
return false;
}
//---------------------------------------------------------
//---------------------------------------------------------
public void InsertaInicio(int valor)
{
Nodo Nuevo = new Nodo(valor);
// Nuevo.dato = valor;
Nuevo.Sig = Inicio;
Inicio = Nuevo;
if( Ultimo == null){
Ultimo = Nuevo;
}
}
//---------------------------------------------------------
public void InsertaFinal(int valor){
Nodo Nuevo = new Nodo(valor);
// Nuevo.dato = valor;
Nuevo.Sig = null;
if (Ultimo == null){
Inicio = Nuevo;
}
else {
Ultimo.Sig = Nuevo;
Ultimo = Nuevo;
}
}
//---------------------------------------------------------
public void Despues(int valor, int cual){
Nodo donde = Existe(cual);
if(donde != null){
Nodo nuevo = new Nodo(valor);
// nuevo.dato = valor;
nuevo.Sig = donde.Sig;
donde.Sig=nuevo;
if( nuevo.Sig==null)
Ultimo= nuevo;
}
}
//---------------------------------------------------------
public Nodo Existe(int cual){
Nodo aca = null;
P= Inicio;
while(P!=null){
if ( P.dato == cual){
aca= P;
P= null;
}
else{
P=P.Sig;}}
return aca;
}
//______________________________________
public void borraultimo()
{
Nodo penultimo;
Nodo ultimo;
P = Inicio;
penultimo = null;
ultimo = null;
while(P != null)
{
penultimo = ultimo;
ultimo = P;
P = P.Sig;
}
if(ultimo != null)
{
if( penultimo == null)
{ Inicio= null;}
else{ penultimo.Sig = null;}
}
}
//______________________________________
public void eliminarPrimero(){
if(Inicio != null){
P= Inicio;
Inicio= Inicio.Sig;
}}
//---------------------------------------------------------
public void Mostrar()
{
System.out.print("lista");
P=Inicio;
while(P!=null)
{
System.out.print(" --> " + P.dato);
P=P.Sig;
}
System.out.println();
}
public void Eliminarcualquiera()
{
}
public void Eliminarcualquiera(int valor)
{
anterior = null;
P= Inicio;
while( P != null){
if ( valor == P.dato){
if(anterior==null){
Inicio= P.Sig;}
else{
anterior.Sig= P.Sig;
}
P=null;}
else{
anterior=P;
P=P.Sig;
}
}
}
public void invertir_lista()
{ P=Inicio;
if(vacia()){
System.out.println("Lista vacia");
}
else{
while(P.Sig!=null){
Nodo Q =P.Sig;
if(Q.Sig==null){
Q.Sig= Inicio;
Inicio=Q;
Ultimo=P;
P.Sig=null;
}
else{
P.Sig=Q.Sig;
Q.Sig=Inicio;
Inicio=Q;
}
}
}
}
}
//Clase principal
import java.util.*;
import java.lang.*;
public class Principal{
public static void main()throws java.io.IOException{
Scanner leer = new Scanner(System.in);
int opcion;
int dato;
int cual;
Lista Milista = new Lista();
do{
System.out.println("escriba 0 si decea salir del programa ");
System.out.println("escriba 1 si decea agregar al incio ");
System.out.println("escriba 2 si decea agregar al final");
System.out.println("escriba 3 si decea agregar despues.. ");
System.out.println("escriba 4 si decea Mostrar dato ");
System.out.println("escriba 5 si decea borrar el primero ");
System.out.println("escriba 6 si decea borrar el ultimo ");
System.out.println("escriba 7 si decea borrar cualquier nodo ");
System.out.println("escriba 8 si decea invertir la Lista ");
System.out.println("Ingrese opcion: ");
opcion= leer.nextInt();
switch(opcion){
case 1:
System.out.println("ingrese dato:");
dato = leer.nextInt();
Milista.InsertaInicio(dato);
break;
case 2:
System.out.println("ingrese dato:");
dato = leer.nextInt();
Milista.InsertaFinal(dato);
break;
case 3:
if(Milista.vacia()){
System.out.println("Lista vacia:");}
else{
System.out.println("dato");
dato = leer.nextInt();
System.out.println("despues de");
cual = leer.nextInt();
Milista.Despues(dato,cual);
}
break;
case 4:
Milista.Mostrar();
break;
case 5:
if(Milista.vacia()){
System.out.println("Lista vacia:");}
else{
Milista.eliminarPrimero();
}
break;
case 6:
if(Milista.vacia()){
System.out.println("Lista vacia:");}
else{
Milista.borraultimo();
}
break;
case 7:
if(Milista.vacia()){
System.out.println("error lista vacia"); }
else{
System.out.println("ingrese dato que quiere eliminar");
dato= leer.nextInt();
Milista.Eliminarcualquiera(dato);}
break;
case 8:
Milista.invertir_lista();
break;
default:
System.out.println("ha ingresado un numero fuera de rango o salido del programa");
break;
}
Milista.Mostrar();
System.out.println();
}while(opcion != 0);
}
}
//Clase Nodo
public class Nodo
{
int dato;
Nodo Sig;
public Nodo(int x){
dato =x;
Sig= null;
}
}
sábado, 2 de julio de 2011
Agenda
Bueno este programa fue hecho para ocuparlo como una agenda, fue hecho utilizando Listas. cualquier duda del codigo pueden escribir y respondo.
// clase principal
import java.util.*;
import java.io.*;
public class Principal{
public static void main()throws java.io.IOException{
BufferedReader leer = new BufferedReader(new InputStreamReader(System.in));
int opcion;
String dato;
String cual;
String numero;
String numero1;
Lista Milista = new Lista();
Lista lis1 = new Lista();
do{
System.out.println("escriba 0 si decea salir del programa ");
//System.out.println("escriba 1 si decea agregar al incio ");
//System.out.println("escriba 2 si decea agregar al final");
//System.out.println("escriba 3 si decea agregar despues.. ");
System.out.println("escriba 1 si Mostrar la agenda ");
//System.out.println("escriba 5 si decea borrar el primero ");
//System.out.println("escriba 6 si decea borrar el ultimo ");
System.out.println("escriba 2 si decea borrar numero");
System.out.println("escriba 3 para agregar numeros");
//System.out.println("escriba 4 si quiere saber si un dato esta o no");
System.out.println("Ingrese opcion: ");
opcion= Integer.parseInt(leer.readLine());
switch(opcion){
//case 1:
//System.out.println("ingrese dato:");
//dato = leer.readLine();
//Milista.InsertaInicio(dato);
//break;
//case 2:
//System.out.println("ingrese dato:");
//dato = leer.readLine();
//Milista.InsertaFinal(dato);
//break;
//case 3:
//if(Milista.vacia()){
//System.out.println("Lista vacia:");}
//else{
//System.out.println("dato");
//dato = leer.readLine();
//System.out.println("despues de");
//cual = leer.readLine();
//Milista.Despues(dato,cual);
// break;
//}
case 1:
Milista.Mostrar();
break;
//case 5:
//if(Milista.vacia()){
//System.out.println("Lista vacia:");}
//else{
//Milista.eliminarPrimero();
//}
//break;
//case 6:
//if(Milista.vacia()){
//System.out.println("Lista vacia:");}
//else{
//Milista.borraultimo();
//}
//break;
case 2:
if(Milista.vacia()){
System.out.println("error lista vacia"); }
else{
System.out.println("ingrese dato que quiere eliminar");
dato= leer.readLine();
if(Milista.buscar(dato)==null){
System.out.println("dato no esta");
} else {
Milista.Eliminarcualquiera(dato);}}
break;
case 3:
System.out.println("Nombre:");
dato = leer.readLine();
//System.out.println("ingrese opcion:");
//int agre= Integer.parseInt(leer.readLine());
//switch(agre){
//case 1:
System.out.println("ingrege numero de casa:");
numero1 = leer.readLine();
//lis1.Ordeno(numero);
//case 2:
System.out.println("ingrese celular");
numero = leer.readLine();
//lis1.Ordeno(numero);
Milista.Ordeno(dato, numero1, numero);
//}
break;
case 9:
System.out.println("nombre");
dato= leer.readLine();
if(Milista.buscar(dato)==null){
System.out.println("dato no esta");
} else {
System.out.println("dato esta");}
break;
default:
System.out.println("usted acaba de salir del Programa.. Adios");
break;
}
Milista.Mostrar();
System.out.println();
}while(opcion != 0);
}
}
// clase nodo
public class Nodo
{
String dato;
Nodo Sig;
String Nun;
String Numero;
public Nodo(String x, String y, String z){
dato =x;
Sig= null;
Nun =y;
Sig = null;
Numero = z;
Sig= null;
}
}
//clase Lista
mport java.util.*;
import java.util.List;
public class Lista{
//Object dato;
Nodo Inicio;
Nodo Ultimo;
Nodo anterior;
Nodo P;
public void Lista(){
Inicio = null;
Ultimo = null;
}
//---------------------------------------------------------
public boolean vacia(){
if(Inicio==null)
return true;
else
return false;
}
//---------------------------------------------------------
// public void InsertaInicio(String valor)
// {
//Nodo Nuevo = new Nodo(valor);
// Nuevo.dato = valor;
// Nuevo.Sig = Inicio;
// Inicio = Nuevo;
// if( Ultimo == null){
// Ultimo = Nuevo;
// }
//}
//---------------------------------------------------------
// public void InsertaFinal(String valor){
// Nodo Nuevo = new Nodo(valor,String y, String z);
// Nuevo.dato = valor;
// Nuevo.Sig = null;
//if (Ultimo == null){
// Inicio = Nuevo;
// }
// else {
// Ultimo.Sig = Nuevo;
//Ultimo = Nuevo;
//}
//}
//---------------------------------------------------------
public void Despues(String valor, String cual){
Nodo donde = Existe(cual);
if(donde != null){
Nodo nuevo = new Nodo(valor, cual, valor);
// nuevo.dato = valor;
nuevo.Sig = donde.Sig;
donde.Sig=nuevo;
if( nuevo.Sig==null)
Ultimo= nuevo;
}
}
//---------------------------------------------------------
//---------------------------------------------------------
public Nodo Existe(String cual){
Nodo aca = null;
P= Inicio;
while(P!=null){
if ( P.dato.equals(cual)){
aca= P;
P= null;
}
else{
P=P.Sig;}}
return aca;
}
//______________________________________
public void borraultimo()
{
Nodo penultimo;
Nodo ultimo;
P = Inicio;
penultimo = null;
ultimo = null;
while(P != null)
{
penultimo = ultimo;
ultimo = P;
P = P.Sig;
}
if(ultimo != null)
{
if( penultimo == null)
{ Inicio= null;}
else{
penultimo.Sig = null;}
}
}
//______________________________________
public void eliminarPrimero(){
if(Inicio != null){
P= Inicio;
Inicio= Inicio.Sig;
}}
//---------------------------------------------------------
public void Mostrar()
{
System.out.println(" Agenda ");
P=Inicio;
while(P!=null)
{
System.out.println(" --> " + P.dato + " casa:" + P.Nun + " cel:" +P.Numero);
P=P.Sig;
}
System.out.println();
}
//________________________________________________________
public Nodo buscar(String nom)
{ P=Inicio;
Nodo q=null;
while(P!=null)
{ if(nom.equals(P.dato))
{ q=P;
P=null; }
else
{ P=P.Sig; }
}
return q;
}
//---------------------------------------------------------
public void Eliminarcualquiera(String valor)
{
anterior = null;
P= Inicio;
while( P != null){
if ( valor.equals(P.dato)){
if(anterior==null){
Inicio= P.Sig;}
else{
anterior.Sig= P.Sig;
}
P=null;}
else{
anterior=P;
P=P.Sig;
}
}
}
//---------------------------------------------------------
public void Ordeno(String valor, String numc, String numcas){
P= Inicio;
anterior=null;
Nodo nuevo= new Nodo(valor, numc, numcas);
if(Inicio == null){
Inicio = nuevo;
nuevo.Sig = null;
P=nuevo;
anterior= Inicio;
}else {
while(P!= null ){
if(nuevo.dato.compareTo(P.dato)<0){
if(anterior==null){
nuevo.Sig=P;
Inicio=nuevo;
P=null;
}else{
nuevo.Sig=P;
anterior.Sig=nuevo;
P=null; }
}
else
{
if(nuevo.dato.compareTo(P.dato)>0){
if(P.Sig==null){
P.Sig=nuevo;
nuevo.Sig=null;
P=null;
} else{
anterior=P;
P=P.Sig;}
}
}
}//fin while
}//fin else
}//fin clase
}
// clase principal
import java.util.*;
import java.io.*;
public class Principal{
public static void main()throws java.io.IOException{
BufferedReader leer = new BufferedReader(new InputStreamReader(System.in));
int opcion;
String dato;
String cual;
String numero;
String numero1;
Lista Milista = new Lista();
Lista lis1 = new Lista();
do{
System.out.println("escriba 0 si decea salir del programa ");
//System.out.println("escriba 1 si decea agregar al incio ");
//System.out.println("escriba 2 si decea agregar al final");
//System.out.println("escriba 3 si decea agregar despues.. ");
System.out.println("escriba 1 si Mostrar la agenda ");
//System.out.println("escriba 5 si decea borrar el primero ");
//System.out.println("escriba 6 si decea borrar el ultimo ");
System.out.println("escriba 2 si decea borrar numero");
System.out.println("escriba 3 para agregar numeros");
//System.out.println("escriba 4 si quiere saber si un dato esta o no");
System.out.println("Ingrese opcion: ");
opcion= Integer.parseInt(leer.readLine());
switch(opcion){
//case 1:
//System.out.println("ingrese dato:");
//dato = leer.readLine();
//Milista.InsertaInicio(dato);
//break;
//case 2:
//System.out.println("ingrese dato:");
//dato = leer.readLine();
//Milista.InsertaFinal(dato);
//break;
//case 3:
//if(Milista.vacia()){
//System.out.println("Lista vacia:");}
//else{
//System.out.println("dato");
//dato = leer.readLine();
//System.out.println("despues de");
//cual = leer.readLine();
//Milista.Despues(dato,cual);
// break;
//}
case 1:
Milista.Mostrar();
break;
//case 5:
//if(Milista.vacia()){
//System.out.println("Lista vacia:");}
//else{
//Milista.eliminarPrimero();
//}
//break;
//case 6:
//if(Milista.vacia()){
//System.out.println("Lista vacia:");}
//else{
//Milista.borraultimo();
//}
//break;
case 2:
if(Milista.vacia()){
System.out.println("error lista vacia"); }
else{
System.out.println("ingrese dato que quiere eliminar");
dato= leer.readLine();
if(Milista.buscar(dato)==null){
System.out.println("dato no esta");
} else {
Milista.Eliminarcualquiera(dato);}}
break;
case 3:
System.out.println("Nombre:");
dato = leer.readLine();
//System.out.println("ingrese opcion:");
//int agre= Integer.parseInt(leer.readLine());
//switch(agre){
//case 1:
System.out.println("ingrege numero de casa:");
numero1 = leer.readLine();
//lis1.Ordeno(numero);
//case 2:
System.out.println("ingrese celular");
numero = leer.readLine();
//lis1.Ordeno(numero);
Milista.Ordeno(dato, numero1, numero);
//}
break;
case 9:
System.out.println("nombre");
dato= leer.readLine();
if(Milista.buscar(dato)==null){
System.out.println("dato no esta");
} else {
System.out.println("dato esta");}
break;
default:
System.out.println("usted acaba de salir del Programa.. Adios");
break;
}
Milista.Mostrar();
System.out.println();
}while(opcion != 0);
}
}
// clase nodo
public class Nodo
{
String dato;
Nodo Sig;
String Nun;
String Numero;
public Nodo(String x, String y, String z){
dato =x;
Sig= null;
Nun =y;
Sig = null;
Numero = z;
Sig= null;
}
}
//clase Lista
mport java.util.*;
import java.util.List;
public class Lista{
//Object dato;
Nodo Inicio;
Nodo Ultimo;
Nodo anterior;
Nodo P;
public void Lista(){
Inicio = null;
Ultimo = null;
}
//---------------------------------------------------------
public boolean vacia(){
if(Inicio==null)
return true;
else
return false;
}
//---------------------------------------------------------
// public void InsertaInicio(String valor)
// {
//Nodo Nuevo = new Nodo(valor);
// Nuevo.dato = valor;
// Nuevo.Sig = Inicio;
// Inicio = Nuevo;
// if( Ultimo == null){
// Ultimo = Nuevo;
// }
//}
//---------------------------------------------------------
// public void InsertaFinal(String valor){
// Nodo Nuevo = new Nodo(valor,String y, String z);
// Nuevo.dato = valor;
// Nuevo.Sig = null;
//if (Ultimo == null){
// Inicio = Nuevo;
// }
// else {
// Ultimo.Sig = Nuevo;
//Ultimo = Nuevo;
//}
//}
//---------------------------------------------------------
public void Despues(String valor, String cual){
Nodo donde = Existe(cual);
if(donde != null){
Nodo nuevo = new Nodo(valor, cual, valor);
// nuevo.dato = valor;
nuevo.Sig = donde.Sig;
donde.Sig=nuevo;
if( nuevo.Sig==null)
Ultimo= nuevo;
}
}
//---------------------------------------------------------
//---------------------------------------------------------
public Nodo Existe(String cual){
Nodo aca = null;
P= Inicio;
while(P!=null){
if ( P.dato.equals(cual)){
aca= P;
P= null;
}
else{
P=P.Sig;}}
return aca;
}
//______________________________________
public void borraultimo()
{
Nodo penultimo;
Nodo ultimo;
P = Inicio;
penultimo = null;
ultimo = null;
while(P != null)
{
penultimo = ultimo;
ultimo = P;
P = P.Sig;
}
if(ultimo != null)
{
if( penultimo == null)
{ Inicio= null;}
else{
penultimo.Sig = null;}
}
}
//______________________________________
public void eliminarPrimero(){
if(Inicio != null){
P= Inicio;
Inicio= Inicio.Sig;
}}
//---------------------------------------------------------
public void Mostrar()
{
System.out.println(" Agenda ");
P=Inicio;
while(P!=null)
{
System.out.println(" --> " + P.dato + " casa:" + P.Nun + " cel:" +P.Numero);
P=P.Sig;
}
System.out.println();
}
//________________________________________________________
public Nodo buscar(String nom)
{ P=Inicio;
Nodo q=null;
while(P!=null)
{ if(nom.equals(P.dato))
{ q=P;
P=null; }
else
{ P=P.Sig; }
}
return q;
}
//---------------------------------------------------------
public void Eliminarcualquiera(String valor)
{
anterior = null;
P= Inicio;
while( P != null){
if ( valor.equals(P.dato)){
if(anterior==null){
Inicio= P.Sig;}
else{
anterior.Sig= P.Sig;
}
P=null;}
else{
anterior=P;
P=P.Sig;
}
}
}
//---------------------------------------------------------
public void Ordeno(String valor, String numc, String numcas){
P= Inicio;
anterior=null;
Nodo nuevo= new Nodo(valor, numc, numcas);
if(Inicio == null){
Inicio = nuevo;
nuevo.Sig = null;
P=nuevo;
anterior= Inicio;
}else {
while(P!= null ){
if(nuevo.dato.compareTo(P.dato)<0){
if(anterior==null){
nuevo.Sig=P;
Inicio=nuevo;
P=null;
}else{
nuevo.Sig=P;
anterior.Sig=nuevo;
P=null; }
}
else
{
if(nuevo.dato.compareTo(P.dato)>0){
if(P.Sig==null){
P.Sig=nuevo;
nuevo.Sig=null;
P=null;
} else{
anterior=P;
P=P.Sig;}
}
}
}//fin while
}//fin else
}//fin clase
}
primer codigo: sobre arboles
Bueno en este primero codigo sera recpecto arboles un ramo que tuve en la carrera de estructura de datos en su momento me costo hacer el codigo asisque espero que ahora le pueda servir a mas de un estudiante :). este codido cuenta con 3 clases la principal, arbol y nodo. donde el usurio ingresa por pantalla el valor que quiere ingresar y respecto a este tiene varias opciones espero les guste.
//clase pricinpal
import java.io.*;
import java.util.Scanner;
public class principal{
static void main(){
arbol miArbol=new arbol();
int dato;
Scanner leer =new Scanner(System.in);
int opcion;
do {
System.out.println(" ");
System.out.println("Ingrese 0 para salir");
System.out.println("Ingrese 1 para insertar nodo");
System.out.println("Ingrese 2 para mostrar el arbol de forma IRD");
System.out.println("Ingrese 3 para mostrar el arbol de forma RID");
System.out.println("Ingrese 4 para mostrar el arbol de forma IDR");
System.out.println("Ingrese 5 para mostrar el numero de nodos que tiene el arbol");
System.out.println("Ingrese 6 para conoser la profundidad del arbol");
System.out.println("Ingrese 7 si quiere ver cuantos nodos son ABB ");
System.out.println("Ingrese 8 para mostrar si es ABB responde true o false");
System.out.println("Ingrese 9 decea conoser la suma de todos los nodos ");
System.out.println("Ingrese 10 si quere saber si el arbol esta completo ");
System.out.println("Ingrese 11 si quiere saber cual es menor nieto derecho ");
System.out.println("Ingrese opcion: ");
opcion = leer.nextInt();
switch(opcion){
case 0:
System.out.print("usted a deceado salir del programa Adios ");
break;
case 1:
System.out.print("entero positivo: ");
dato= leer.nextInt();
if(dato>0){
miArbol.Insertar(dato);}
break;
case 2:
miArbol.mostrarIRD();
break;
case 3:
miArbol.mostrarRID();
break;
case 4:
miArbol.mostrarIDR();
break;
case 5:
int lisz=miArbol.contarnodos();
System.out.println("La cantidad de nodos es: "+lisz);
break;
case 6:
int ct = miArbol.Pnodos();
System.out.println("La Profundidad de nodos es: "+ct);
break;
case 7:
int ui = miArbol.EsABB();
System.out.println("la cantidad de nodos qe es ABB es:"+ ui);
break;
case 8:
boolean que = miArbol.AverABB();
System.out.println("La respuesta es:"+ que);
break;
case 9:
int sumita = miArbol.LaSuma();
System.out.println("La suma es: "+sumita);
break;
case 10:
boolean cm = miArbol.SiCompleto();
System.out.println("la respuesta es: "+ cm);
break;
case 11:
int aa= miArbol.SiMeDer();
System.out.println("la respuesta es: "+ aa);
break;
default:
System.out.println("error el numero ingresado esta fuera de rango");
break;
}
} while(opcion !=0);
}
}
//clase arbol
public class arbol {
private nodo raiz;
public arbol(){
raiz = null;
}
//---------------------------------------------------------
public void Insertar(int valor){
nodo nuevo = new nodo(valor);
raiz = colocaNodo(raiz, nuevo);
}
private nodo colocaNodo(nodo actual, nodo nuevo){
if(actual==null)
return nuevo;
else {
if(actual.hizq <= actual.hder){
actual.hizq++;
actual.nizq = colocaNodo(actual.nizq, nuevo);
}
else {
actual.hder++;
actual.nder= colocaNodo(actual.nder, nuevo);
}
}
return actual;
}
//---------------------------------------------------------
private void IRD(nodo actual) {
if(actual!=null) {
IRD(actual.nizq);
System.out.print(actual.dato + " - ");
IRD(actual.nder);
}
}
public void mostrarIRD(){
System.out.println("IRD: ");
IRD(raiz);
System.out.println();
}
//---------------------------------------------------------
public void RID(nodo actual){
if(actual!=null){
System.out.print(actual.dato + " - ");
RID(actual.nizq);
RID(actual.nder);
}}
public void mostrarRID(){
System.out.println("RID: ");
RID(raiz);
System.out.println();
}
//---------------------------------------------------------
public void IDR(nodo actual){
if(raiz!=null){
RID(actual.nizq);
RID(actual.nder);
System.out.print(actual.dato+ " - ");}}
public void mostrarIDR(){
System.out.println("IDR: ");
IDR(raiz);
System.out.println();}
//---------------------------------------------------------
public int contar(nodo actual){
if(actual==null){
return 0;
}
else{
return 1+contar(actual.nder)+contar(actual.nizq);
}
}
public int contarnodos(){
return contar(raiz);
}
//---------------------------------------------------------
public int profundidad(nodo actual){
if ( actual == null){
return 0;}
else{
int PI= profundidad(actual.nizq);
int PD= profundidad(actual.nder);
if (PI >= PD) {
return 1 + PI;}
else {
return 1 + PD;
}}
}
public int Pnodos(){
return profundidad(raiz);
}
//---------------------------------------------------------
public int ABB(nodo actual){
if ( actual == null){
return 0;}
else {
int VI = actual.dato - 1;
int VD= actual.dato + 1;
if (actual.nizq != null){
VI= actual.nizq.dato;
}
if ( actual.nder != null){
VD= actual.nder.dato;
}
if( VI < actual.dato && actual.dato < VD){
return 1 + ABB(actual.nizq) + ABB(actual.nder);}
else{
return ABB(actual.nizq) + ABB(actual.nder);
}
}}
public int EsABB(){
return ABB(raiz);
}
//---------------------------------------------------------
public boolean SiABB(nodo actual){
if(actual == null){
return true;
}
else {
if( EsABB() == contar(actual)){
return true;}
else{
return false;}
} }
public boolean AverABB(){
return SiABB(raiz);
}
//---------------------------------------------------------
public int Suma(nodo actual){
if (actual == null){
return 0;}
else{
return actual.dato+ Suma(actual.nizq) + Suma(actual.nder); }
}
public int LaSuma(){
return Suma(raiz);
}
//---------------------------------------------------------
public boolean Completo(nodo actual){
if (actual == null){
return true;}
else {
int P = profundidad(actual);
int C = contar(actual);
if (Math.pow(2,P) - 1 == C){
return true;
}else{
return false;
}}
}
public boolean SiCompleto(){
return Completo(raiz);}
//---------------------------------------------------------
int li;
int MenorNietoDer(nodo actual)
{if(actual!=null)
{if(actual.nder!=null){
li= MI(actual.nder);}
else{
li=actual.dato;} }
else {
li=raiz.dato;}
return li;}
public int MI(nodo actual){
if(actual.nizq == null){
return actual.dato;
}else{
return MI(actual.nizq);
}
}
public int SiMeDer(){
return MenorNietoDer(raiz);}
//---------------------------------------------------------
}
//clase nodo
public class nodo {
int dato;
int hizq;
int hder;
nodo nizq;
nodo nder;
public nodo(int valor) {
dato = valor;
hizq = 0;
hder = 0;
nizq = null;
nder = null;
}
}
//clase pricinpal
import java.io.*;
import java.util.Scanner;
public class principal{
static void main(){
arbol miArbol=new arbol();
int dato;
Scanner leer =new Scanner(System.in);
int opcion;
do {
System.out.println(" ");
System.out.println("Ingrese 0 para salir");
System.out.println("Ingrese 1 para insertar nodo");
System.out.println("Ingrese 2 para mostrar el arbol de forma IRD");
System.out.println("Ingrese 3 para mostrar el arbol de forma RID");
System.out.println("Ingrese 4 para mostrar el arbol de forma IDR");
System.out.println("Ingrese 5 para mostrar el numero de nodos que tiene el arbol");
System.out.println("Ingrese 6 para conoser la profundidad del arbol");
System.out.println("Ingrese 7 si quiere ver cuantos nodos son ABB ");
System.out.println("Ingrese 8 para mostrar si es ABB responde true o false");
System.out.println("Ingrese 9 decea conoser la suma de todos los nodos ");
System.out.println("Ingrese 10 si quere saber si el arbol esta completo ");
System.out.println("Ingrese 11 si quiere saber cual es menor nieto derecho ");
System.out.println("Ingrese opcion: ");
opcion = leer.nextInt();
switch(opcion){
case 0:
System.out.print("usted a deceado salir del programa Adios ");
break;
case 1:
System.out.print("entero positivo: ");
dato= leer.nextInt();
if(dato>0){
miArbol.Insertar(dato);}
break;
case 2:
miArbol.mostrarIRD();
break;
case 3:
miArbol.mostrarRID();
break;
case 4:
miArbol.mostrarIDR();
break;
case 5:
int lisz=miArbol.contarnodos();
System.out.println("La cantidad de nodos es: "+lisz);
break;
case 6:
int ct = miArbol.Pnodos();
System.out.println("La Profundidad de nodos es: "+ct);
break;
case 7:
int ui = miArbol.EsABB();
System.out.println("la cantidad de nodos qe es ABB es:"+ ui);
break;
case 8:
boolean que = miArbol.AverABB();
System.out.println("La respuesta es:"+ que);
break;
case 9:
int sumita = miArbol.LaSuma();
System.out.println("La suma es: "+sumita);
break;
case 10:
boolean cm = miArbol.SiCompleto();
System.out.println("la respuesta es: "+ cm);
break;
case 11:
int aa= miArbol.SiMeDer();
System.out.println("la respuesta es: "+ aa);
break;
default:
System.out.println("error el numero ingresado esta fuera de rango");
break;
}
} while(opcion !=0);
}
}
//clase arbol
public class arbol {
private nodo raiz;
public arbol(){
raiz = null;
}
//---------------------------------------------------------
public void Insertar(int valor){
nodo nuevo = new nodo(valor);
raiz = colocaNodo(raiz, nuevo);
}
private nodo colocaNodo(nodo actual, nodo nuevo){
if(actual==null)
return nuevo;
else {
if(actual.hizq <= actual.hder){
actual.hizq++;
actual.nizq = colocaNodo(actual.nizq, nuevo);
}
else {
actual.hder++;
actual.nder= colocaNodo(actual.nder, nuevo);
}
}
return actual;
}
//---------------------------------------------------------
private void IRD(nodo actual) {
if(actual!=null) {
IRD(actual.nizq);
System.out.print(actual.dato + " - ");
IRD(actual.nder);
}
}
public void mostrarIRD(){
System.out.println("IRD: ");
IRD(raiz);
System.out.println();
}
//---------------------------------------------------------
public void RID(nodo actual){
if(actual!=null){
System.out.print(actual.dato + " - ");
RID(actual.nizq);
RID(actual.nder);
}}
public void mostrarRID(){
System.out.println("RID: ");
RID(raiz);
System.out.println();
}
//---------------------------------------------------------
public void IDR(nodo actual){
if(raiz!=null){
RID(actual.nizq);
RID(actual.nder);
System.out.print(actual.dato+ " - ");}}
public void mostrarIDR(){
System.out.println("IDR: ");
IDR(raiz);
System.out.println();}
//---------------------------------------------------------
public int contar(nodo actual){
if(actual==null){
return 0;
}
else{
return 1+contar(actual.nder)+contar(actual.nizq);
}
}
public int contarnodos(){
return contar(raiz);
}
//---------------------------------------------------------
public int profundidad(nodo actual){
if ( actual == null){
return 0;}
else{
int PI= profundidad(actual.nizq);
int PD= profundidad(actual.nder);
if (PI >= PD) {
return 1 + PI;}
else {
return 1 + PD;
}}
}
public int Pnodos(){
return profundidad(raiz);
}
//---------------------------------------------------------
public int ABB(nodo actual){
if ( actual == null){
return 0;}
else {
int VI = actual.dato - 1;
int VD= actual.dato + 1;
if (actual.nizq != null){
VI= actual.nizq.dato;
}
if ( actual.nder != null){
VD= actual.nder.dato;
}
if( VI < actual.dato && actual.dato < VD){
return 1 + ABB(actual.nizq) + ABB(actual.nder);}
else{
return ABB(actual.nizq) + ABB(actual.nder);
}
}}
public int EsABB(){
return ABB(raiz);
}
//---------------------------------------------------------
public boolean SiABB(nodo actual){
if(actual == null){
return true;
}
else {
if( EsABB() == contar(actual)){
return true;}
else{
return false;}
} }
public boolean AverABB(){
return SiABB(raiz);
}
//---------------------------------------------------------
public int Suma(nodo actual){
if (actual == null){
return 0;}
else{
return actual.dato+ Suma(actual.nizq) + Suma(actual.nder); }
}
public int LaSuma(){
return Suma(raiz);
}
//---------------------------------------------------------
public boolean Completo(nodo actual){
if (actual == null){
return true;}
else {
int P = profundidad(actual);
int C = contar(actual);
if (Math.pow(2,P) - 1 == C){
return true;
}else{
return false;
}}
}
public boolean SiCompleto(){
return Completo(raiz);}
//---------------------------------------------------------
int li;
int MenorNietoDer(nodo actual)
{if(actual!=null)
{if(actual.nder!=null){
li= MI(actual.nder);}
else{
li=actual.dato;} }
else {
li=raiz.dato;}
return li;}
public int MI(nodo actual){
if(actual.nizq == null){
return actual.dato;
}else{
return MI(actual.nizq);
}
}
public int SiMeDer(){
return MenorNietoDer(raiz);}
//---------------------------------------------------------
}
//clase nodo
public class nodo {
int dato;
int hizq;
int hder;
nodo nizq;
nodo nder;
public nodo(int valor) {
dato = valor;
hizq = 0;
hder = 0;
nizq = null;
nder = null;
}
}
Otro rumbo
bueno.. como no se bien que uso darle a este blog decidi subir codigos en java hechos por mi por si mas adelante algun estudiante le puede servir mi ayuda .. espero esta sea valorada.. saludos
Suscribirse a:
Entradas (Atom)
Lízbeth Alejandra Lopez Jimenez