Ho provato a scrivere qualcosa


Da 2-3 a B-Albero:


codice:
SplitChild(x,y,A)
if key1[y] < x
    min = key1[y]
else
    min = x
if key2[y] > x
    max = key2[y]
else
    max = x
if max = x
    mid = key2[y]
else if min = x
    mid = key1[y]
else
    mid = x
z = "nuovo nodo"
key1[z] = mid
left[z] = min
right[z] = max
if n[pi[y]] = 1
    "sostituisci y con z"
if n[pi[y]] = 2
    SplitChild(mid,pi[y],A)



Da RossoNero a B-Albero


codice:
Trasforma(T)
Alloca A23[A]
Alloca N23[z]
key1[x] = key[root[T]]
root[A] = x
IdentificaFigli[root[A],root[T]]


IdentificaFigli[a,t]
if color[left[t]] = red
    TrasformaRB[a,t]
else if color[left[t]] = black
    TrasformaBB[a,t]


TrasformaRB[a,t]
Alloca N23
key2[a] = key1[a]
key1[a] = key[left[t]]
key1[x] = key[right[t]]
right[a] = x
pi[x] = a
IdentificaFigli[a,left[t]]
IdentificaFigli[right[a],right[t]


TrasformaBB[a,t]
Alloca N23[z]
Alloca N23[y]
key1[z] = key[left[t]]
key1[y] = key[right[t]]
left[a] = x
pi[x] = a
if color[t] = red
    middle[a] = y
    pi[y] = a
else if color[t] = black
    right[a] = y
    pi[y] = a

Possono funzionare?