Está en la página 1de 16

import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.tree.

*; public class arbol extends JFrame implements TreeSelectionListener { JLabel lblselection,etiqueta1,etiqueta2,etiqueta3,etiqueta4; JTree arbol; JScrollPane scroll; JPanel P1,P2,P3,P4,P0; CardLayout cardlayout; DefaultMutableTreeNode raiz, nodo1,nodo2, nodo3,nodo4,nodo5,nodo6,nodo7 ; JLabel nombre; JTextField r; JButton limpiar; public arbol() { setLayout(new GridLayout(1,2)); raiz=new DefaultMutableTreeNode ("raiz"); nodo1=new DefaultMutableTreeNode("nodo1"); nodo2=new DefaultMutableTreeNode("nodo2"); nodo3=new DefaultMutableTreeNode("nodo3"); nodo4=new DefaultMutableTreeNode("etiqueta "); nodo5=new DefaultMutableTreeNode("nombre"); nodo6=new DefaultMutableTreeNode("r"); nodo7=new DefaultMutableTreeNode("limpiar"); nombre =new JLabel ("nombre"); P1=new JPanel(); r=new JTextField(20); arbol=new JTree(raiz); arbol.addTreeSelectionListener(this); raiz.add(nodo1); raiz.add(nodo2); raiz.add(nodo3); nodo3.add(nodo4); nodo3.add(nodo5); nodo3.add(nodo6); nodo3.add(nodo7);

limpiar =new JButton("limpiar"); limpiar.addActionListener(this); P1.add(nombre); P1.add(r); P1.add(limpiar); add(P1); scroll=new JScrollPane(arbol); add(scroll); setVisible(true); setSize(400,400); setDefaultCloseOperation(EXIT_ON_CLOSE);}

public void valueChanged(TreeSelectionEvent evento) { if(arbol.getLastSelectedPathComponent().toString().equals(nodo3));

} public static void main(String args[]) { new arbol(); } }

import java.io.*; public class leer { public static int datoInt()//leer enteros { int con=0,NUM=0; do{ con=0; try{ NUM=Integer.parseInt(dato()); }catch(NumberFormatException io) { System.out.println("Error Ingreso Digito mal"); System.out.print("Ingrese nuevamente : "); con++; } }while(con>0); return NUM; } public static int datoMayorQcero() //LeerLimite mayor q 0 { boolean ok=false; int con=0,NUM=0; do{ con=0; ok=false; try{ NUM=Integer.parseInt(dato()); if(NUM<=0) { ok=true;} }catch(NumberFormatException io) { con++; System.out.println("Error Ingreso Digito mal"); System.out.print("Ingrse nuevamente : ");

} }while(con>0||ok==true); return NUM; } public static double datoDouble() //leer double { int con=0; double N=0; do{ con=0; try{ N=Double.parseDouble(dato()); }catch(NumberFormatException io) { System.out.println("Error Ingreso Digito mal"); System.out.print("Ingrse nuevamente : "); con++; } }while(con>0); return N; } public static float datoFloat()//leer float { int con=0; float N1=0; do{ con=0; try{ N1=Float.parseFloat(dato()); }catch(NumberFormatException io) { System.out.println("Error Ingreso Digito mal"); System.out.print("Ingrse nuevamente : "); con++; } }while(con>0); return N1; } public static String dato() { String dato = ""; try { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader flujoE = new BufferedReader(isr); dato = flujoE.readLine(); } catch(IOException e) { System.err.println("Error : " + e.getMessage());

} return dato; } public static long datoLong()//leer float { int con=0; long N2=0; do{ con=0; try{ N2=Long.parseLong(dato()); }catch(NumberFormatException io) { System.out.println("Error Ingreso Digito mal"); System.out.print("Ingrse nuevamente : "); con++; } }while(con>0); return N2; } public int MENUOPCIONES() { System.out.println("----------------"); System.out.println("\n [1] "); System.out.println(" [2] "); System.out.println(" [3] "); System.out.println(" [4] "); System.out.println(" [5] "); System.out.println(" [6] "); System.out.println(" [7] \n"); System.out.print("\nINGRESE Opcion : "); int R=leer.datoInt(); System.out.println("----------------); return R; } import java.io.*; public class OrdenaminetoConArbolBinario { public static void main (String[] args)throws IOException { BufferedReader e=new BufferedReader(new InputStreamReader(System.in)); boolean ok; String R; int lim=0,a[]; do{ System.out.println("\n ---------- Universidad Nacional De Piura-Proedump Sullana-----\n"); do{ ok=false; System.out.print(" Ingrese Limite Vector : "); lim=LeerEntero();

if(lim<2) { System.out.println(" ok=true; } }while(ok);

- Ingrese limite > 2 -");

a=new int[lim]; System.out.println("\n ---------- Ingresar Datos---------\n"); a=LLenarArreglo(lim); OrdConArbolBinario(a,0,lim-1);

System.out.println("\n ------ Arreglo Ordenado Con Arbol Binario -----\n"); for(int i=0;i<lim;i++) System.out.println(" "+a[i]+" , "); System.out.print("\n Desea Continuar ( S | N ) : "); R=e.readLine(); }while(R.equalsIgnoreCase("s")); System.out.println("\n ---------------\n\n"); } public static int []LLenarArreglo(int Lim)throws IOException { int a[]=new int [Lim]; for(int i=0;i<Lim;i++) { System.out.print(" Ingrese Numero "+(i+1)+" : "); a[i]=LeerEntero(); } return a; } public static void OrdConArbolBinario(int a[],int izq,int der) { int i = izq; int j = der; int M = a[(izq + der)/2]; do{ while(a[i] < M) i++; while( a[j] > M) j--; if(i <= j) { int aux = a[i]; a[i] = a[j]; a[j] = aux; i++;j--; } }while(i <= j); if(izq < j) OrdConArbolBinario(a,izq,j);

if(i < der) OrdConArbolBinario(a,i,der); } public static int LeerEntero()throws IOException { BufferedReader e=new BufferedReader(new InputStreamReader(System.in)); int Num=0; boolean ok=false; do{ ok=false; try { Num=Integer.parseInt(e.readLine()); } catch (NumberFormatException ex) { ok=true; System.out.print(" Digito invalido Ingrese Nuevamente : "); } }while(ok==true); return Num; } } import java.io.*; public class OrdenaminetoConArbolBinario { public static void main (String[] args)throws IOException { BufferedReader e=new BufferedReader(new InputStreamReader(System.in)); boolean ok; String R; int lim=0,a[]; do{ System.out.println("\n ---------- Universidad Nacional De Piura ------\n"); do{ ok=false; System.out.print(" Ingrese Limite Vector : "); lim=LeerEntero(); if(lim<2) { System.out.println(" - Ingrese limite > 2 -"); ok=true; } }while(ok); a=new int[lim]; System.out.println("\n ---------- Ingresar valores al arreglo ---------\n"); a=LLenarArreglo(lim); OrdConArbolBinario(a,0,lim-1);

System.out.println("\n ------ Arreglo Ordenado Con Arbol Binario -----\n"); for(int i=0;i<lim;i++) System.out.println(" "+a[i]+" , "); System.out.print("\n Desea continuar Usando el Programa ( S | N ) : "); R=e.readLine(); }while(R.equalsIgnoreCase("s")); System.out.println("\n -----------------------------------------------\n\n"); } public static int []LLenarArreglo(int Lim)throws IOException { int a[]=new int [Lim]; for(int i=0;i<Lim;i++) { System.out.print(" Ingrese Numero "+(i+1)+" : "); a[i]=LeerEntero(); } return a; } public static void OrdConArbolBinario(int a[],int izq,int der) { int i = izq; int j = der; int M = a[(izq + der)/2]; do{ while(a[i] < M) i++; while( a[j] > M) j--; if(i <= j) { int aux = a[i]; a[i] = a[j]; a[j] = aux; i++;j--; } }while(i <= j); if(izq < j) OrdConArbolBinario(a,izq,j); if(i < der) OrdConArbolBinario(a,i,der); } public static int LeerEntero()throws IOException { BufferedReader e=new BufferedReader(new InputStreamReader(System.in)); int Num=0; boolean ok=false; do{ ok=false; try {

Num=Integer.parseInt(e.readLine()); } catch (NumberFormatException ex) { ok=true; System.out.print(" Digito invalido Ingrese Nuevamente : "); } }while(ok==true); return Num; } } class Nodo{ int dato; Nodoizq,der; public Nodo (int dat) { dato=dat; izq=der=null; } } class Arbol { Nodoraiz; public Arbol() { raiz=null; } public void insnodo(Nodo p) { if(p!=null) { if(raiz==null) { raiz=p; } else { crearhijo(p,raiz); } } } public void crearhijo(Nodo p,Nodo r) { if(p.dato<r.dato) { if(r.izq==null) { r.izq=p; }

else { crearhijo(p,r.izq); } } else { if(p.dato==r.dato) { System.out.print("El Elemento ya existe"); } else { if(r.der==null) { r.der=p; } else { crearhijo(p,r.der); } } } } public void preorden(Nodo p) { if(p!=null) { System.out.println(); System.out.print(""+p.dato); preorden(p.izq); preorden(p.der); } } public void inorden(Nodo p) { if(p!=null) { System.out.println(); inorden(p.izq); System.out.print(""+p.dato); inorden(p.der); } } public void postorden(Nodo p) { if(p!=null) { System.out.println(); postorden(p.izq);

postorden(p.der); System.out.print(""+p.dato); } } public NodoAr buscar(int n,NodoAr q) { Nodo p; p=null; if(q!=null) { if(n==q.dato) { p=q; } else { if(n>q.dato) { p=buscar(n,q.der); } else { p=buscar(n,q.izq); } } } return p; } public void liberarmem(Nodo p) { if(p!=null) { liberarmem(p.izq); liberarmem(p.der); p.izq=null; p.der=null; } } public boolean Repetido(NodoAr raiz,int dat) { boolean activar=false; if(raiz!=null) { if(raiz.dato==dat) { activar=true; } else {

if(dat<raiz.dato) { activar=Repetido(raiz.izq,dat); } else { activar=Repetido(raiz.der,dat); } } } else { activar=false; } return activar; } public NodoAr DatoActual(Nodo raiz,int dat) { Nodo actual=null; if(raiz!=null) { if(raiz.dato==dat) { actual=raiz; } else { if(dat<raiz.dato) { actual=DatoActual(raiz.izq,dat); } else { actual=DatoActual(raiz.der,dat); } } } return actual; } public Nodo UltimoVis(NodoAr ra,int dat) { NodoAr actual=null; NodoAr ultimo=null; if(raiz.dato==dat) { ultimo=null;

} else { if(ra!=null) { if(dat<ra.dato) { if(ra.izq.dato==dat) { ultimo=ra; } else { ultimo=UltimoVis(ra.izq,dat); } } else { if(ra.der.dato==dat) { ultimo=ra; } else ultimo=UltimoVis(ra.der,dat); } } }

return ultimo; } public void Eliminar(int dat) { Nodo ultimo=null,actual=raiz; Nodo tem=raiz; Nodo marcado=null,sucesor=null; actual=DatoActual(actual,dat); ultimo=UltimoVis(tem,dat); marcado=actual; //con este codigo lo que hacemos es buscar ek sucesor if(actual.izq==null && actual.der==null) { sucesor=null; } else {

if(actual.izq==null) { sucesor=actual.der; } else { if(actual.der==null) { sucesor=actual.izq; } else { //ninguno de los dos es null sucesor=actual=actual.der; } } } while(actual.izq!=null) { actual=actual.izq; } actual.izq=marcado.izq; if(ultimo!=null) { if(dat<ultimo.dato) { ultimo.izq=sucesor; } else { ultimo.der=sucesor; } } else { raiz=sucesor; } } public void liberarmem() { if(raiz!=null) { liberarmem(raiz); raiz=null; } }

} public class RaizSuc { public static void main(String[]args) { Arbol lis=new Arbol(); System.out.println("---------------------------"); System.out.println("INGRESE ELEMENTOS"); //int op=menuop(); iniproceso(lis); System.out.println("------------DIFERENTES VISTAS-----------"); verPre(lis); verIn(lis); verPost(lis); System.out.println("---------------ELIMINACION------------------"); EliminarNodo(lis); verPre(lis); verIn(lis); verPost(lis);

} public static void EliminarNodo(Arbol lis) { int da; do{ System.out.println(""); System.out.print("NODO DE REFERENCIA :"); da=leer.datoInt(); if(!lis.Repetido(lis.raiz,da)) { System.out.println("Dato No Encontrado"); } }while(!lis.Repetido(lis.raiz,da)); lis.Eliminar(da); NodoAr ultimo=lis.UltimoVis(lis.raiz,da); NodoAr marcado=lis.DatoActual(lis.raiz,da); NodoAr hijo1=marcado.izq; NodoAr hijo2=marcado.der; if(hijo1!=null && hijo2!=null) { lis.Eliminar(hijo1.dato); lis.Eliminar(hijo2.dato); } else { if(hijo1!=null) { lis.Eliminar(hijo1.dato);

} if(hijo2!=null) { lis.Eliminar(hijo2.dato); } } if(ultimo!=null) { lis.Eliminar(ultimo.dato); }

} public static int menuop() { int op; System.out.println("Menu de opciones (Precione caulquier otro numero para salir) "); System.out.println("============="); System.out.println("1.-Ingresar cualquier Elemento"); System.out.println("2.-ver Listado en PreOrden"); System.out.println("3.-ver Listado en InOrden"); System.out.println("4.-ver Listado en PostOrden"); System.out.println("5.-Buscar un Elemento"); System.out.println("6.-Eliminar"); System.out.println("7.-Agregar mas Nodos"); System.out.print("Ingrese su opccion :"); op=leer.datoInt(); return op; } public static void iniproceso(Arbol lis) { System.out.println("Iniciado Proceso "); generaArbol(lis); } public static void generaArbol(Arbol lis) { NodoAr p; int x,n; System.out.print("Ingresar cantidad de Numeros: "); n=leer.datoInt(); for(int i=0;i<n;i++) { do{

System.out.print("Ingresar Numero ["+(i+1)+"]: "); x=leer.datoInt(); if(lis.Repetido(lis.raiz,x))

{ System.out.println("*******Dato Repetido******* "); } }while(lis.Repetido(lis.raiz,x)); p=new NodoAr(x); lis.insnodo(p); } } public static void verPre(Arbol lis) { System.out.print("\n "); System.out.print("Listado en PreOrden:"); lis.preorden(lis.raiz); lis=new Arbol(); System.out.print("\n\n "); } public static void verIn(Arbol lis) { System.out.print("\n "); System.out.print("Listado en InOrden:"); lis.inorden(lis.raiz); lis=new Arbol(); System.out.print("\n\n "); } public static void verPost(Arbol lis) { System.out.print("\n "); System.out.print("Listado en PostOrden:"); lis.postorden(lis.raiz); //lis=new Arbol(); System.out.print("\n\n "); } public static void buscarNodo(Arbol lis) { NodoAr nb; int dbus; System.out.println(" "); System.out.print("Ingrese Elemento a Buscar"); dbus=leer.datoInt(); nb=lis.buscar(dbus,lis.raiz); if(nb!=null) { System.out.println("Elemento Encontrado,su valor duplicao es:"+nb.dato*2); } else { System.out.println("Elemento no existe en la lista"); } } }