Sie sind auf Seite 1von 9

package arbori2;

import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JScrollPane; import javax.swing.JTextArea;

public class Arbori2 extends JFrame {

private JTextArea outputArea;

public Arbori2() { super(); this.setTitle("Colocviu - Arbori binari"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Container c = this.getContentPane(); c.setLayout(null);

JLabel outputLbl = new JLabel("Output:"); outputLbl.setBounds(5, 5, 100, 20); c.add(outputLbl);

JButton btn = new JButton("Do some shit..."); btn.setBounds(410, 25, 140,25); btn.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent ae) { Nod t = creazaArbore();

outputArea.append("Traversare recursiva in preordine\n"); preordine_recursiv(t); preordine_iterativ(t);

t = creazaArbore(); outputArea.append("Traversare recursiva in inordine\n"); inordine_recursiv(t); inordine_iterativ(t);

t = creazaArbore(); outputArea.append("Traversare recursiva in postordine\n"); postordine_recursiv(t); postordine_iterativ(t);

t = creazaArbore(); traverseaza_latime(t); } }); c.add(btn);

outputArea = new JTextArea(); JScrollPane sp = new JScrollPane(outputArea); sp.setBounds(5, 25, 400, 400); c.add(sp);

this.setSize(590, 470); }

/** * @param args the command line arguments */ public static void main(String[] args) { Arbori2 foo = new Arbori2(); foo.setVisible(true); }

public Nod creazaArbore() {

Nod root = new Nod(5); // root.stanga = new Nod(7); root.dreapta = new Nod(11); // /\ /\

//

// //

/ \ 7 11

root.stanga.stanga = new Nod(1); // root.stanga.dreapta = new Nod(8); //

/ \ 1 8

return root; }

public void preordine_recursiv(Nod x) { if( x==null ) return;

outputArea.append(" Nod vizitat: " + x.valoare + "\n"); if( x.stanga != null ) preordine_recursiv(x.stanga); if( x.dreapta != null ) preordine_recursiv(x.dreapta); }

public void inordine_recursiv(Nod x) { if( x==null ) return;

if( x.stanga != null ) inordine_recursiv(x.stanga); outputArea.append(" Nod vizitat: " + x.valoare + "\n"); if( x.dreapta != null ) inordine_recursiv(x.dreapta);

public void postordine_recursiv(Nod x) { if( x==null ) return;

if( x.stanga != null ) postordine_recursiv(x.stanga); if( x.dreapta != null ) postordine_recursiv(x.dreapta); outputArea.append(" Nod vizitat: " + x.valoare + "\n"); }

public void preordine_iterativ(Nod x){ Stiva stv=new Stiva(); stv.push( new ItemStiva(x, false)); outputArea.append("Traversarea iterativa in preordine\n");

while(!stv.isEmpty()){ ItemStiva xt= stv.pop(); if(xt.nod.stanga==null&&xt.nod.dreapta==null) { outputArea.append("Nodul vizitat este "+xt.nod.valoare+"\n"); } else if( xt.vizitat == true ) { outputArea.append("Nodul vizitat este "+xt.nod.valoare+"\n"); } else { if(xt.nod.dreapta!=null) { stv.push( new ItemStiva(xt.nod.dreapta, false)); }

if(xt.nod.stanga!=null) { stv.push( new ItemStiva(xt.nod.stanga,false)); }

xt.vizitat = true; stv.push(xt); } } }

public void inordine_iterativ(Nod x){ Stiva stv=new Stiva(); stv.push( new ItemStiva(x, false)); outputArea.append("Traversarea iterativa in inordine\n");

while(!stv.isEmpty()){ ItemStiva xt= stv.pop(); if(xt.nod.stanga==null&&xt.nod.dreapta==null) { outputArea.append("Nodul vizitat este "+xt.nod.valoare+"\n"); } else if( xt.vizitat == true ) { outputArea.append("Nodul vizitat este "+xt.nod.valoare+"\n"); } else { if(xt.nod.dreapta!=null) { stv.push( new ItemStiva(xt.nod.dreapta, false));

xt.vizitat = true; stv.push(xt);

if(xt.nod.stanga!=null) { stv.push( new ItemStiva(xt.nod.stanga,false)); } } } }

public void postordine_iterativ(Nod x){ Stiva stv=new Stiva(); stv.push(new ItemStiva(x, false)); outputArea.append("Traversarea iterativa in postordine\n");

while(!stv.isEmpty()){ ItemStiva xt= stv.pop(); if(xt.nod.stanga==null&&xt.nod.dreapta==null) { outputArea.append("Nodul vizitat este "+xt.nod.valoare+"\n"); } else if( xt.vizitat == true ) { outputArea.append("Nodul vizitat este "+xt.nod.valoare+"\n"); } else {

xt.vizitat = true; stv.push(xt);

if(xt.nod.dreapta!=null) { stv.push( new ItemStiva(xt.nod.dreapta, false)); }

if(xt.nod.stanga!=null) { stv.push( new ItemStiva(xt.nod.stanga,false)); } } } }

public void traverseaza_latime(Nod x){ Coada q=new Coada(); q.put(x); outputArea.append("Traversarea in latime\n"); while(!q.isEmpty()){ Nod xt=q.get(); outputArea.append(" Nod vizitat: "+xt.valoare+"\n"); if(xt.stanga!=null) q.put(xt.stanga);

if(xt.dreapta!=null) q.put(xt.dreapta);

} } }

Das könnte Ihnen auch gefallen