Arbol..

  • Uploaded by: Erika
  • 0
  • 0
  • April 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Arbol.. as PDF for free.

More details

  • Words: 580
  • Pages: 12
ÁRBOL class NodoArbol{ NodoArbol li,ld; int dato; public NodoArbol(int d){ dato=d; li=ld=null; } public synchronized void insertar(int d){ if(ddato){ if(ld==null){ ld=new NodoArbol(d); } else{ ld.insertar(d); } } }//fin insertar public int retornadato(){ return(dato); }//end retornadato } public class Arbol { private NodoArbol raiz; public Arbol() { raiz=null;

} public NodoArbol retornaraiz(){ return(raiz); }

public synchronized void insertarNodo(int d){ if(raiz==null){ raiz=new NodoArbol(d); //primero=raiz; } else{ raiz.insertar(d); } }//fin insertarNodo public synchronized String preorden(){ String pre=ayudantepreorden(raiz); return(pre); } private String ayudantepreorden(NodoArbol nodo){ String cadena=new String(); if(nodo!=null){ //return; //System.out.print(nodo.dato+" "); cadena=cadena+String.valueOf(nodo.dato+" "); cadena=cadena+ayudantepreorden(nodo.li); cadena=cadena+ayudantepreorden(nodo.ld); } else{ cadena=""; } return(cadena); } public synchronized String inorden(){ String inor=ayudanteinorden(raiz); return(inor); } private String ayudanteinorden(NodoArbol nodo){ String cadena=new String(); if(nodo!=null){ // return;

cadena=cadena+ayudanteinorden(nodo.li); cadena=cadena+nodo.dato+" "; cadena=cadena+ayudanteinorden(nodo.ld); } else{cadena="";} return(cadena); } public synchronized String posorden(){ String pos=ayudanteposorden(raiz); return(pos); } private String ayudanteposorden(NodoArbol nodo){ String cadena=new String(); if(nodo!=null){

cadena=cadena+ayudanteposorden(nodo.li); cadena=cadena+ayudanteposorden(nodo.ld); cadena=cadena+nodo.dato+" "; } else{cadena="";} return(cadena); } public synchronized int altura(NodoArbol R){ NodoArbol p=R; int altizq=p.li==null ? 1:1+altura(p.li); int altder=p.ld==null ? 1:1+altura(p.ld); return(Math.max(altizq,altder)); }//end altura public synchronized int hojas(NodoArbol R){ NodoArbol p=R; int hojas=0; if(p.li==null & p.ld==null){ hojas=1; } else{ if(p.li!=null){ hojas=hojas+hojas(p.li); } if(p.ld!=null){ hojas=hojas+hojas(p.ld); }

} return(hojas); }//end hojas public synchronized String ancestros(NodoArbol R,int d){ NodoArbol p=R; String h=new String(); if (p.dato==d){ return(String.valueOf(" --> "+d)); }//end if if (d>p.dato){ h=h+" --> "+p.dato+ancestros(p.ld,d); } else{ h=h+" --> "+p.dato+ancestros(p.li,d); } return(h); }

}

PRUEBA ARBOL import java.awt.Color; import java.awt.Container; import java.awt.FlowLayout; import java.awt.Font; import java.awt.TextArea; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*;

public class PruebaArbol extends JFrame {

private static final long serialVersionUID = 1L; Container c=getContentPane(); private JMenuBar menu; private JMenu i1,i2; private JMenuItem construye,mostrar,alt,hoj,anc,salir,creditos,nuevo,inor,pos,pre; private int dato=0,nodos=0; Arbol arbol; String aux="R",fila="

",columna="\n\n",cadena=new String();

private TextArea most;

public PruebaArbol(String cogollo) { super(cogollo); c.setLayout(new FlowLayout()); menu = new JMenuBar(); i1 = new JMenu("ARCHIVO"); i2 = new JMenu("PROCESOS"); nuevo=new JMenuItem("NUEVO PROYECTO"); salir=new JMenuItem("SALIR"); construye=new JMenuItem("CONSTRUIR ARBOL"); mostrar=new JMenuItem("MOSTRAR ARBOL");

alt=new JMenuItem("ALTURA DEL ARBOL"); hoj=new JMenuItem("HOJAS DEL ARBOL"); anc=new JMenuItem("ANCESTROS DEL ARBOL"); inor=new JMenuItem("INORDEN"); pre=new JMenuItem("PREORDEN"); pos=new JMenuItem("POSORDEN"); creditos=new JMenuItem("CREDITOS"); i1.add(nuevo); i1.add(construye); i1.add(mostrar); i1.add(creditos); i1.add(salir); i2.add(alt); i2.add(hoj); i2.add(anc); i2.add(inor); i2.add(pos); i2.add(pre);

nuevo.addActionListener(new manejaEventos()); salir.addActionListener(new manejaEventos()); mostrar.addActionListener(new manejaEventos()); construye.addActionListener(new manejaEventos()); alt.addActionListener(new manejaEventos());

anc.addActionListener(new manejaEventos()); hoj.addActionListener(new manejaEventos()); inor.addActionListener(new manejaEventos()); pre.addActionListener(new manejaEventos()); pos.addActionListener(new manejaEventos()); creditos.addActionListener(new manejaEventos()); menu.add(i1); menu.add(i2); c.setBackground(new Color(128,0,255)); setJMenuBar(menu);

setSize( 1024 , 768 ); setVisible( true );

}

class manejaEventos implements ActionListener{ public void actionPerformed(ActionEvent e) {

if(e.getSource()==construye){

arbol=new Arbol();

int valor=0; nodos=Integer.parseInt( JOptionPane.showInputDialog(null,"ingrese el numero de nodos para el arbol") ); for (int i=1;i<=nodos;i++){ dato=Integer.parseInt( JOptionPane.showInputDialog(null,"ingrese el dato a insertar en el arbol") ); arbol.insertarNodo(dato); } }//end construye

if(e.getSource()==pre){ JOptionPane.showMessageDialog(null,"Preorden : "+arbol.preorden()); }//end preorden

if(e.getSource()==inor){ JOptionPane.showMessageDialog(null,"Inorden : "+arbol.inorden()); }//end inorden

if(e.getSource()==pos){ JOptionPane.showMessageDialog(null,"Posorden : "+arbol.posorden()); }//end posorden

if(e.getSource()==alt){ JOptionPane.showMessageDialog(null,"Altura : "+arbol.altura(arbol.retornaraiz())); }//end altura

if(e.getSource()==hoj){ JOptionPane.showMessageDialog(null,"Hojas : "+arbol.hojas(arbol.retornaraiz())); }//end hojas

if(e.getSource()==anc){ int db=Integer.parseInt(JOptionPane.showInputDialog(null,"Ingrese el dato cuyos ancestros desea conocer")); JOptionPane.showMessageDialog(null,"Ancestro : "+arbol.ancestros(arbol.retornaraiz(),db)); }//end ancestros

if(e.getSource()==mostrar){ mostrarArbol(arbol.retornaraiz(),aux); c.removeAll(); c.add(most); c.setBackground(Color.WHITE); c.repaint();

}//end mostrar

if(e.getSource()==nuevo){ c.removeAll(); arbol=new Arbol(); cadena=new String();

most=new TextArea(); dato=0;nodos=0; aux="R";fila="

";columna="\n\n";

c.setBackground(Color.WHITE); }//end nuevo

if(e.getSource()==creditos){ c.removeAll(); JLabel cred=new JLabel("ESTE PROGRAMA FUE DISEÑADO POR JUAN RICARDO COGOLLO OYOLA"); cred.setBounds(200,200,510,200); cred.setFont(new Font("EuropeExt", Font.BOLD + Font.ITALIC, 14)); cred.setForeground(Color.DARK_GRAY); c.setBackground(Color.white); c.add(cred); c.repaint(); }

if(e.getSource()==salir){ System.exit(0); }//end salir

}}

public static void main(String[] args) { PruebaArbol ventana = new PruebaArbol("ARBOLES BINARIOS DE BUSQUEDA"); ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }

void pintar(int d,String h){ cadena=cadena+columna+fila+h+" : "+String.valueOf(d); most = new TextArea("",200,300,0); most.setBounds(20,200,700,500); most.append(cadena); most.setEditable(false); }

void mostrarArbol(NodoArbol R,String hijo){ String h=hijo; if(R!=null){ pintar(R.retornadato(),h);

if(R.li!=null){ aux="Izq";

fila=fila+"

";

mostrarArbol(R.li,aux); int n=fila.length(); fila=fila.substring(10); } if(R.ld!=null){ aux="Der"; fila=fila+"

";

mostrarArbol(R.ld,aux); int n=fila.length(); fila=fila.substring(10); } } }//end windows

}

Related Documents

Arbol
June 2020 24
Arbol
November 2019 30
Arbol
May 2020 14
Arbol
June 2020 16
Arbol..
April 2020 20
Arbol
October 2019 42

More Documents from ""

Resume
May 2020 18
Arduino.pdf
December 2019 26
Tema 4
June 2020 19
December 2019 28