W poprzednich wykładach mówiliśmy o obrotach, a jeśli chodzi o prawidłowy obrót i rotację,
mówiliśmy o tym, jak przemieszczać się po strukturze drzewiastej za pomocą
w celu trawersowania.
Rozmawialiśmy o tym, jak wstawić dany węzeł.
W tym wykładzie będziemy mówić o implementacji funkcji subtelnego naruszenia.
Więc co musimy zrobić?
Mamy subtelną funkcję naruszającą, OK, coś w tym stylu, możemy dać A ..
A co mamy zrobić?
Przede wszystkim musimy wykonać iterację za pomocą pętli Why i sprawdzić trzy warunki.
Przede wszystkim, podczas gdy węzeł jest rzeczywistym węzłem, jest to węzeł, który wstawiliśmy i zaczynamy od tego,
aby uzyskać węzeł.
Więc podczas gdy węzeł nie jest węzłem głównym, podczas gdy S jest węzłem czerwonym.
Więc co to znaczy, gdy węzeł jest czerwony i gdy węzeł macierzysty aktualnej nuty jest czerwony, musimy
wykonać iterację.
Oczywiście musimy zaimplementować funkcję Ezarda, więc możemy podać dowolny węzeł.
Więc co musimy zrobić?
Jeśli węzeł nie jest, to musimy wrócić z kolorową kropką na czarno i nie wiem, dlaczego tak jest.
Musimy wrócić tam, gdzie kolor jest równy kolorowi czerwonemu lub nie.
I oczywiście przepraszam za to.
Musimy po nas wrócić.
Będzie to więc funkcja boolowska, która wróci do nas lub dla nas.
I oczywiście o tym właśnie mówiliśmy.
Jeśli węzeł jest brakiem, więc w zasadzie nie jest wskaźnikiem, to nie jest węzłem irad, co oznacza, że jest
to czarny węzeł, więc nie jest czerwony.
Dlatego właśnie zwracana wartość jest dla nas, w przeciwnym razie musimy sprawdzić, czy kolor węzłów jest zbliżony
do czerwonego, czy nie.
Więc o tym właśnie rozmawialiśmy.
Jak widać, wskaźniki nie mają koloru czarnego.
Więc to właśnie tutaj sprawdzamy.
Jeśli jest to inny wskaźnik, kolor jest czarny.
Więc w zasadzie nie jest czerwony.
A co mamy zrobić?
Przede wszystkim musimy uzyskać węzeł nadrzędny, a następnie musimy pobrać węzeł dziadka.
OK, wtedy musimy sprawdzić, czy węzeł nadrzędny jest lewym dzieckiem, czy prawym dzieckiem swojego rodzica.
Więc dziadek.
Więc co to znaczy, że jeśli węzeł nadrzędny jest węzłem dziadków, lewym węzłem, więc sprawdzamy, czy węzeł nadrzędny jest
lewym dzieckiem swojego rodzica, to co musimy zrobić?
Przede wszystkim musimy sprawić, by wujek był właściwym dzieckiem węzła dziadków.
Więc w zasadzie mamy tutaj do czynienia z tym przypadkiem.
Mamy wstawiony węzeł.
Węzeł macierzysty to lewe dziecko dziadka i oczywiście wujek jest prawym dzieckiem
dziadka.
Więc wujek jest właściwym dzieckiem dziadka.
A co mamy zrobić?
Musimy tylko sprawdzić, czy jeśli wujek się nie skończył, a nawet kolor wujka to IRAD, to w zasadzie
tak jest.
A więc w zasadzie co musimy zrobić, jeśli dojdziemy do wniosku, że wujek ma kolor czerwony,
a rodzic jest porzuconym dzieckiem po dziadku, to musimy dojść do siebie.
Jak więc widzisz, musimy zmienić kolor tego rodzica i zmienić kolor wujka na
czarny, a dziadka na czerwony.
I oczywiście, po tym, możesz zadać pytanie, dlaczego mamy X u dziadków?
Bo może się zdarzyć, że to robimy lub kolorujemy.
Chcemy tylko czarnych właściwości w innej części struktury podobnej do drzewa.
Więc może będziemy musieli wykonać inne operacje.
OK, więc musimy zmienić kolor dziadka na czerwony.
Więc powiedzieliśmy, że kolor dziadka ma być czerwony i musimy powiedzieć, że wujek i rodzice wiedzą, jaki kolor
ma być czarny.
Zasadniczo są to powtarzające się operacje, które są potrzebne.
Następnie ponownie inicjalizujemy węzeł, aby był węzłem dziadków.
Dlatego rozważamy każdy element aż do węzła głównego, ponieważ może się zdarzyć, że będziemy musieli wykonać
kilka operacji.
Po operacji przywracania może wystąpić kilka wybarwień.
Może się zdarzyć, że będziemy musieli wykonać obrót w lewo lub w prawo.
Z drugiej strony może się zdarzyć, że będziemy musieli zrobić kolejne kolorowanie i tak dalej.
Więc to jest ten przypadek.
Nawiasem mówiąc, tak jest również.
W tym przypadku wstawiony przez nas Węzeł X nie jest właściwym dzieckiem, ale lewym dzieckiem jego rodzica.
Ale to nie ma znaczenia.
Węzeł nadrzędny to lewe dziecko dziadka.
Wujek jest prawidłowym węzłem z Conradem.
Więc co musimy zrobić?
Musimy zmienić kolor węzła.
Więc to jest przypadek pierwszy i czwarty.
Musimy trochę wyzdrowieć, ponieważ wiemy na pewno, że węzeł wujka jest czarny, a węzeł jest
właściwym dzieckiem.
Dlatego właśnie.
Musimy sprawdzić, czy jeśli notatka jest węzłem nadrzędnym, prawym węzłem, to co wtedy musimy zrobić?
Musimy obrócić w lewo w węźle nadrzędnym, a węzeł będzie węzłem nadrzędnym.
Węzeł nadrzędny będzie węzłem nadrzędnym.
OK, więc w ten sposób kontynuujemy iterację, aż dotrzemy do węzła głównego.
A więc tak jest.
Mamy węzeł jako właściwe dziecko jego rodzica.
Rodzic to lewe dziecko dziadka.
Wujek jest prawidłowym węzłem w kolorze czarnym.
Więc co musimy zrobić?
Jak widzisz, musimy wykonać prosty obrót rodzica w lewo.
Więc wykonujemy obrót w lewo w węźle nadrzędnym.
OK, jeśli węzeł nie jest właściwym węzłem, to co musimy zrobić?
To jest przypadek trzeci.
Więc jeśli węzeł nie jest właściwym węzłem i tak jest w trzecim przypadku, musimy
wykonać obrót na dziadku, rodzicu i dziadkach, który kolor.
Więc jeśli węzeł jest dużym dzieckiem rodzica, a nie właściwym dzieckiem rodzica,
wtedy, jak widać, wykonujemy prawidłową rotację na dziadku, a węzeł rodziców i dziadków zmieniają kolor.
Więc tutaj rodzic ma kolor czerwony, dziadek ma kolor czarny, OK?
A po obróceniu zmieniają kolor.
Więc to jest przypadek trzeci.
Więc musimy zmienić kolor rodziców.
Nie, być czarnym.
Dziadkowie nie mogą być czerwoni.
OK, a potem musimy dokonać właściwej rotacji dziadków.
Tak więc jest to przypadek trzeci i jest to kluczowe, jeśli węzeł nadrzędny jest lewym dzieckiem dziadka.
Oczywiście musimy sprawdzić partnerów symetrycznych.
Więc co musimy zrobić?
Wiemy, że węzeł nadrzędny jest właściwym dzieckiem dziadka.
Więc wujek będzie pozostawionym dzieckiem dziadka.
Więc tutaj wujek jest właściwą nutą dziadków.
Oczywiście tutaj wujek jest lewym węzłem dziadka.
Mamy więc do czynienia z partnerem symetrycznym.
Do tej pory węzeł macierzysty był lewym dzieckiem dziadka.
Ale w nadchodzących przypadkach mamy do czynienia z partnerami symetrycznymi.
Zatem węzeł rodzicielski jest prawym dzieckiem dziadka, a wujek jest lewym dzieckiem dziadka, jak
widać.
Musimy więc zrobić mniej więcej to samo, co omówiliśmy tutaj.
Musimy więc sprawdzić, czy jeśli wujek nie jest zakonnicą i kolor jest zbliżony do IRAD, to
tak jest w przypadku partnerów symetrycznych.
Więc co musimy zrobić?
Musimy ustawić kolor węzła dziadka na kolor czerwony.
Musimy ustawić kolor węzła rodziców na czarny, a kolor wujka na czarny.
Więc w zasadzie musimy zrobić kolorowanie.
Więc mamy do czynienia z tą sytuacją.
Węzeł, który wstawiliśmy, jest lewym dzieckiem swojego rodzica.
Rodzic jest dzieckiem dziadka.
Co mamy robić?
Jak widzisz, musimy zrobić kolorowanie.
I to jest dokładnie to, co stanie się w przypadku czwartym.
Węzeł mamy jako dziecko rodzica, rodzica jako dziecko jego dziadka.
Musimy zmienić kolory, OK, a co jeszcze mamy zrobić?
To jest symetryczny partner drugiego przypadku.
Jeśli węzeł jest równy lewemu węzłowi nadrzędnemu.
Więc co to znaczy, że węzeł jest lewym węzłem swojego rodzica?
Następnie wykonujemy właściwy obrót i aktualizujemy odniesienia, ponieważ idziemy w górę do węzła głównego.
Możesz zadać pytanie, dlaczego?
Ponieważ może się zdarzyć, że jeśli dokonamy aktualizacji, na przykład zmienimy kolory lub wykonamy dany
obrót, to w innych częściach drzewa, takich jak struktura, naruszymy właściwość czerwonego bloku.
Musimy więc sprawdzić, czy te właściwości są naruszane, czy nie.
Więc to jest symetryczny partner drugiego przypadku.
A jeśli węzeł nie jest lewym węzłem, to tak jest.
Trzech symetrycznych partnerów.
Musimy trochę kolorować i musimy zrobić lewy obrót na dziadku.
A więc tak jest.
Trójka symetryczna.
Mamy do czynienia z odpowiednim dzieckiem.
Rodzic jest dzieckiem dziadka.
Dlaczego musimy to zrobić, musimy trochę obrócić i trochę pokolorować.
To jest dokładnie to, co się tutaj dzieje.
Dokonujemy kolorowania sumarycznego i dokonujemy ostatniej rotacji na dziadkach.
Bardzo ważne jest, aby nie można było odczytać koloru prymy.
Jeśli więc wykonamy kilka obrotów, to oczywiście może się zdarzyć, że węzeł główny stanie się węzłem czerwonym.
Więc jeśli korzeń jest węzłem, musimy ponownie skalibrować, aby był czarny.
OK, więc musimy zrobić coś takiego.
Przepraszamy, ale to musi znajdować się poza zakresem pętli Why.
Więc musimy to zrobić tutaj.
OK, więc to wszystko dotyczy seksualnego gwałtu, jeśli chodzi o odpowiednie czarne właściwości.
W następnym wykładzie sprawdzimy, czy działa dobrze, czy nie.
Dzięki za oglądanie.