Sprawdzenie czy dana kategoria należy do tej najwyższej w drzewie

0

mam drzewo kategorii - najwyższe kategorie mają np. id 1, 4
podkategorie dla 1 maja np.:

2,3,6,8

podpodkategorie dla 2 mają np.:

11,20,31

itd.

i teraz jak sprawdzić czy np: 20 nalezy do najwyzszej 1
dodam, że drzewo moze mieć więcej zagnieżdżeń
używam springa

0

A jak to drzewo przechowujesz?

0

w tabeli categories mam:

id_category  parent_category_id
1

Najprościej (nie jest to rozwiązanie optymalne, ale najłatwiejsze) będzie Ci rekurencyjnie (albo w jakiejś pętli typu while) sprawdzać rodzica, do czasu aż dojdziesz do najwyższego poziomu. Czyli - bierzesz sprawdzany element i patrzysz, kto jest jego rodzicem. Potem takie samo sprawdzenie wykonujesz dla tego rodzica i tak dalej, aż do chwili, w której otrzymany w ten sposób wynik będzie leżał na wierzchołku drzewa (czyli w Twoim przykładzie - będzie miał ID 1 albo 4). Potem, mając ustaloną kategorię najwyższego poziomu, porównujesz ją z tym, co chciałeś sprawdzić i masz odpowiedź, czy poszukiwany element podlega pod określoną gałąź drzewa, czy nie.

0
cerrato napisał(a):

Najprościej (nie jest to rozwiązanie optymalne, ale najłatwiejsze) będzie Ci rekurencyjnie (albo w jakiejś pętli typu while) sprawdzać rodzica, do czasu aż dojdziesz do najwyższego poziomu.

Rekurencja akurat przydałaby się w sytuacji odwrotnej, czyli gdy potrzeba znaleźć w drzewie węzeł o zadanej wartości. Wtedy rekurencyjne wywołania pozwolą krótko i wygodnie sprawdzać każdą gałąź i każdy węzeł, aż do samych liści.

Tutaj wystarczy sposób iteracyjny – zwykła pętla, iterująca dotąd, aż sprawdzany węzeł będzie korzeniem drzewa. Pod warunkiem, że każdy węzeł drzewa zawiera referecję do węzła-rodzica, rzecz jasna. ;)

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