Sie sind auf Seite 1von 4

rbol Rojo Negro

a) Implementaciones con claves nicas


package arbolrojonegro;
public class Main {
public Main() {
}
public static void main(String[] args) {
RojoNegroSinRep arbolSR = new RojoNegroSinRep();
arbolSR.demo01(); !enerando "reeSe# $in repe#icione$
}
}
package arbolrojonegro;
class Item implements Comparable{ %na cla$e de cla&e$ a$ociada$ a &alor
pro#ec#ed in# codigo;
pro#ec#ed 'loa# &alor;
public Item(){}; (on$#ruc#or $in argumen#o$
public Item(int cod !loat val){ (on$#ruc#or de la cla$e
codigo=cod;
&alor=&al;
}
public String toString(){ )*+ibimo$
S#ring au* = ,,;
au*-=codigo-, . ,-&alor;
re#urn au*;
} )*+ibimo$
public in# ge#(odigo(){re#urn codigo;}
public 'loa# ge#/alor(){re#urn &alor;}
public 0#em ge#0#em(){re#urn #+i$;}
public &oid $e#(odigo(in# cod){codigo=cod;}
public &oid $e#/alor('loa# &al){&alor=&al;}
public int compare"o(#bject ot$er){
0#em o#ro = (0#em)o#+er;
re#urn codigo . o#ro.codigo;
}
public &oid in#ercambio(0#em i#em){
0#em burb= new 0#em(i#em.codigo1i#em.&alor);
in#anciamo$ burb con da#o$ parame#ro
i#em.codigo = #+i$.codigo;
a$ignamo$ a#ribu#o$ del obje#o in&ocan#e al
i#em.&alor = #+i$.&alor;
obje#o parame#ro
#+i$.codigo = burb.codigo;
a$ignamo$ a#ribu#o$ del obje#o burb al
#+i$.&alor = burb.&alor;
obje#o in&ocan#e
}
}
1
package arbolrojonegro;
impor# ja&a.u#il.2;
class %rra&Items e'tends %rra&(ist)Item*{ %na cla$e de implemen#aci3n
de un 4rra56i$# de obje#o$ i#em
public %rra&Items(int cant c$ar tipo) { (on$#ruc#or
$uper(can#); (on$#ruimo$ obje#o 4rra56i$# con capacidad de
can# obje#o$
in# au*(od = 0; %na &ariable au*iliar
'or(in# i=0; i7can#; i--){ la llenaremo$ de 0#em8$1 dependiendo
$wi#c+(#ipo){ del #ipo de llenado re9uerido
ca$e 848:{ lo$ +aremo$ en $ecuencia a$cenden#e
au*(od = i;
break;
}
ca$e 8;8:{ o de$cenden#e ...
au*(od = can# . i;
break;
}
ca$e 8R8:{ o bien randomicamen#en#e (4l a<ar)
au*(od = (in#)(can#2Ma#+.random());
}
} $wi#c+
add(new 0#em(au*(od1 ('loa#)(can#2102Ma#+.random())));
} 'or
} (on$#ruc#or
} cla$$ 4rra50#em$
package arbolrojonegro;
impor# ja&a.u#il.2;
22
2 )$#e programa genera un arbol rojo=negro ordenado por el c3digo del
2 obje#o >#em. 6o$ c3digo$ repe#ido$ $on ignorado$ por $er un ?rbol
2 9ue implemen#a un conjun#o
2
public class RojoNegroSinRep{
public &oid demo01(){
4rra50#em$ arra50#em$ = new 4rra50#em$(@018R8);
S5$#em.ou#.prin#ln(,arra50#em$ generado new 4rra50#em$(@018R8),);
S5$#em.ou#.prin#ln(arra50#em$);
S5$#em.ou#.prin#ln(,arra50#em$ con#iene ,-arra50#em$.$i<e()-
, elemen#o$,);
"reeSe# arbol = new "reeSe#(arra50#em$);
S5$#em.ou#.prin#ln(,4rbol Rojo Negro $in repe#icione$,);
S5$#em.ou#.prin#ln(arbol);
S5$#em.ou#.prin#ln(,4rbol Rojo Negro con#iene ,-arbol.$i<e()-
, nodo$,);
}
}
2
b) Implementaciones con claves repetidas
22
2 !enera un arbol rojo=negro ordenado por el codigo del obje#o i#em.
2 (ada nodo con#iene un obje#o 0#em1 ma$ un obje#o 4rra56i$# para el
2 o&er'low de lo$ obje#o$ 0#em repe#ido$.
2
package arbolrojonegro;
impor# ja&a.u#il.2;
class ItemRep implements Comparable{ %na cla$e de cla&e$ a$ociada$
a un &alor ...
pro#ec#ed 0#em i#em;
pro#ec#ed 4rra56i$#70#emA a6i$#;
public ItemRep(Item it){ (on$#ruc#or $in argumen#o$
i#em = new 0#em(i#);
a6i$# = new 4rra56i$#70#emA();
}
public int compare"o(#bject ot$er){
0#emRep o#ro = (0#emRep)o#+er;
re#urn #+i$.i#em.codigo . o#ro.i#em.codigo;
}
public Item getItem(){re#urn i#em;}
public %rra&(ist)Item* geta(ist(){re#urn a6i$#;}
}
package arbolrojonegro;
impor# ja&a.u#il.2;
class RojoNegroConRep{
"reeSe# arbol;
0#emRep i#emRep;
in# con#B& = 0;
public void demo+,(){
arbol = new "reeSe#70#emRepA();
4rra50#em$ arra50#em$ = new 4rra50#em$(@018R8);
0#em i#em;
0#era#or i# = arra50#em$.i#era#or();
w+ile(i#.+a$Ne*#()){ Recorro 4rra56i$# de i#em$
i#em = (0#em)i#.ne*#(); ob#engo el corrien#e
Si no lo con$igo incluir en el "reeSe# como i#em unico
lo incluiremo$ en el o&er'low
i#emRep = new 0#emRep(i#em);
i' (Carbol.add(i#emRep)) o&er'low(i#em);
}
S5$#em.ou#.prin#ln(#+i$);
}
private void over!lo-(Item item.ar){#ra#amien#o i#em$ repe#ido$
0#era#or i# = arbol.i#era#or();
0#em i#em4u*;
w+ile(i#.+a$Ne*#()){ recorriendo el arbol
Bb#engo el obje#o del nodo
0#emRep i#emRep = (0#emRep)i#.ne*#();
Bb#engo $u i#em
i#em4u* = new 0#em(i#emRep.ge#0#em());
i'(i#em4u*.compare"o(i#emDar) == 0){
i#emRep.a6i$#.add(i#emDar);
con#B&--;
} i'
} w+ile
} &oid o&er'low
3

public String toString(){
S#ring au*S#r = ,4rbol Rojo Negro con repe#icione$En,;
au*S#r -= ,#iene , - arbol.$i<e() - , nodo$En,;
au*S#r -= ,5 un o&er'low de , - con#B& - , i#em$EnF,;
0#era#or i#4rb = arbol.i#era#or();
0#em i#em4u*;
w+ile(i#4rb.+a$Ne*#()){ recorriendo el ?rbol
Bb#engo el obje#o del nodo
0#emRep i#emRep = (0#emRep)i#4rb.ne*#();
Bb#engo el i#em
au*S#r -= i#emRep.ge#0#em() - ,1 ,; conca#eno
4rra56i$# ar6i$# = i#emRep.ge#a6i$#();
0#era#or i#a6i$# = ar6i$#.i#era#or();
w+ile(i#a6i$#.+a$Ne*#()){ recorriendo el o&er'low del nodo
0#em i#em = (0#em)i#a6i$#.ne*#(); Bb#engo el i#em
au*S#r -= i#em - ,1 ,; conca#eno
}
au*S#r -= ,En,;
}
au*S#r -= ,G,;
re#urn au*S#r;
}
}
4
arra50#em$ generado new 4rra50#em$(@018R8)
F1H . 1IH.IJKL1 J . 1H0.1HMNM1 11 . HL.HNIJKM1 1I . 1MH.IKLH11 10 .
1LI.KIJ1I1 0 . HL.HIJIMJ1 N . 1IM.1H1JJ1 1@ . @K.ILMKMK1 1 . 1J.LI1LMJ1 K
. 1@@.N1LJI1 K . 1HH.IMIJ1 I . J1.@HJMLN1 1H . 1IN.0IIN11 I . 1@.MLLM1K1
0 . 1II.1L@@1 N . NJ.IMMMI1 J . 1KL.LHJI@1 J . 101.IJKHH1 1I . LL.NIK1L1
H . 1LM.NM1MMG
arra50#em$ con#iene @0 elemen#o$
%rbol Rojo Negro sin repeticiones
F0 . HL.HIJIMJ1 1 . 1J.LI1LMJ1 K . 1@@.N1LJI1 N . 1IM.1H1JJ1 H .
1LM.NM1MM1 J . 1H0.1HMNM1 I . J1.@HJMLN1 10 . 1LI.KIJ1I1 11 . HL.HNIJKM1
1@ . @K.ILMKMK1 1H . 1IH.IJKL1 1I . 1MH.IKLH1G
4rbol Rojo Negro con#iene /, nodos
%rbol Rojo Negro con repeticiones
#iene /, nodos
5 un over!lo- de 0 items
FK . H1.KNKNN1 K . 1J@.L0NN1 K . NL.LLI@JN1 K . LL.MII@11
J . @0.L0LIH1
I . 1JI.J01M1
11 . 10H.MHI0H1
1@ . 1J1.@J@I@1 1@ . 1.1@@@HIM1
1K . NI.@LJ0NK1
1N . 1M@.NJHM1 1N . 10L.JKMMK1
1H . L.@@JLIL1
1J . MJ.L0LKL1
1M . LH.N1NHI1
1I . K.10MM@MK1 1I . 1J0.K00JM1 1I . JK.M@0MK1
1L . I1.LN1IJN1 1L . 0.1@@LLHLJH1
G
O%06; S%(()SSP%6 (#o#al #ime: 1 $econd)

Das könnte Ihnen auch gefallen