дерево 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

0 ответов

Другие вопросы по тегам