sprawdzić czy 2 drzewa węzły są związane (tj przodek-potomek)sprawdzić czy 2 drzewa węzły są związane (przodek/potomek) w czasie O (1) wstępnego przetwarzania
- go rozwiązać w czasie O (1) razem z o (N), przestrzeń (N = # węzłów)
- wstępne przetwarzanie jest dozwolone
koniec. Podejdę do mojego rozwiązania (podejścia) poniżej. Przestań, jeśli najpierw chcesz się pomyśleć.
Dla wstępnego przetwarzania postanowiłem zrobić wstępne zamówienie (rekursywnie przejść przez korzenia, potem dzieci) i nadać etykietę do każdego węzła.
Wytłumaczę etykiety w szczegółach. Każda etykieta będzie składać się z oddzielonych przecinkami liczb naturalnych, takich jak "1,2,1,4,5" - długość tej sekwencji równa się (głębokość węzła + 1). Na przykład. etykieta korzenia to "1", dzieci korzenia będą miały etykiety "1,1", "1,2", "1,3" itd. Następujące poziomy węzłów będą miały etykiety takie jak "1,1,1" , "1,1,2", ..., "1,2,1", "1,2,2", ...
Załóżmy, że "numer zamówienia" węzła jest "Oparty na jednym indeksie tego węzła" na liście dzieci jego rodzica.
Ogólna reguła: etykieta węzła składa się z etykiety nadrzędnej, po której następuje przecinek i "numer porządkowy" węzła.
Dlatego, aby odpowiedzieć, jeśli dwa węzły są związane (tj przodek-potomek) w czasie O (1), będę sprawdzenie czy etykieta z jednym z nich jest „prefiks” z drugiej na etykiecie. Chociaż nie jestem pewien, czy takie etykiety można uznać za zajmujące przestrzeń O (N). Oczekuje się
Wszelkie krytycy z poprawek lub alternatywnego podejścia.
To jest miejsce O (N^2) w najgorszym przypadku, w którym każdy węzeł ma jedno dziecko (makaron). – WeaselFox