дерево 2-3 и ключ x и вернуть преемника x
Вопрос был в том, чтобы написать псевдокод для алгоритма, который получит 2-3 дерева и ключ x и вернет преемника x в данном дереве. algorithem должен работать на O(log(n)).
оглядываясь на мой код, он беспорядочный, иногда я рассматривал x как узел (имея 1-2 ключа и 2-3 сына), а иногда как одно значение, мне нужна была бы помощь
Спасибо:)
Successor23(T,x):
if x is null:
return x
If x has 2 sons:
Return min(x.right);
If (x has 3 sons) and (x==min key):
Return min(x.middle);
If (x has 3 sons) and (x==max key):
Return min(x.right);
\\ x has no sons therefore a leaf
Parent = x.parent;
if x==parent.middle:
return parent(max key);
\\ x is a leaf and also is not the mid son
While parent is not null, and x!=parent.left:
x=parent;
parent=x.parent;
if parent != null:
x=parent;
parent=x.parent;
if x==parent.middle:
return parent (max key)
if x!=parent.left:
return parent (min key)
else:
\\ meaning parent == null, we reached the root
if x==parent.middle:
return parent (max key)
if x==parent.left:
return parent (min key)
else:
return parent.key