Ho provato a scrivere qualcosa
Da 2-3 a B-Albero:
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
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?