lewy sąsiad węzła drzewa

0

Czy ma może ktoś pomysł jak pobrać lewego sąsiada danego węzła lub NULL jesli brak lewego sąsiada, np. mamy taką strukturę:
user image
lewym węzłem 'portable electronics' jest 'televisions'

Byłbym wdzięczny za wskazanie jakiegoś sposobu postępowania lub kodu SQL jeśli mamy tabelę nested_category z kolumnami: node_id, node_name, left_node, right_node.

0

Jeżeli każdy węzeł będzie zawierał wskaźnik do swojego rodzica oraz swój numer porządkowy u rodzica, to wtedy będziesz mógł uzyskać dostęp poprzez rodzica do sąsiadów. Jeżeli potomki są ponumerowane w ten sposób, że potomek o numerze 0 jest z lewej strony, a o numerze MAX jest z prawej strony, to odwołujesz się do rodzica i sprawdzasz, kto jest jego potomkiem o numerze mniejszym o jeden niż swój własny. Tak w psedokodzie to można tak:

class Nod{
  Nod* parent;
  int number;
  Nod*[] children;

  Nod* dajLewego{
    return parent->children[number-1];
  }
}

Opolski Portal Programistyczny
http://programowanie.opole.pl

1 użytkowników online, w tym zalogowanych: 0, gości: 1