Znajdujesz fragment, który jest do wymiany - dla przykładu - drzewo czysto abstrakcyjne. Przykłady...
Kod
1 = root
1.1 = pgsql
1.1.1 = linux
1.2 = oracle
1.2.1 = solaris
1.2.2 = bsd
1.2.2.1 = free bsd
1.2.2.2 = open bsd
1.2.3 = mac os
Teraz przenosisz "mac os" wyżej - o jeden poziom:
Kod
...
1.2.2.1 = free bsd
1.2.2.2 = open bsd
1.3 = mac os
Zatem, zbędny był element
2. wynikający z przeniesienia 1 poziom wyżej
Teraz przenosimy bsd wyżej
Kod
...
1.2 = oracle
1.2.1 = solaris
1.2.2 = mac os
1.3 = bsd
1.3.1 = free bsd
1.3.2 = open bsd
Trzeba zamienić
2.2. na
3., czyli przeniesienie o 2 poziomy wyżej (z oracle do roota) i zmienić elementy, które są niżej (w tym przypadku
1.2.2 = mac os zamiast 1.2.3.
Teraz przeniesienie w dół
Kod
1 = root
1.1 = pgsql
1.2 = oracle
1.2.1 = solaris
1.2.2 = bsd
1.2.3 = mac os
1.2.4 = linux
Zmiana dotyczyła tylko elementu linux, konieczne była zamiana z
1.1.1 na
1.2.4, czyli wypadł element
1.1.
Ogólnie ilość wymienianych fragmentów ściśle zależy od ilości zmienianych poziomów. Każdy poziom wyżej lub niżej to jeden fragment w ścierzce.
Rzecz, o których powinieneś pamiętać - przy przenoszeniu elementów mających dzieci musisz zmieniać ten sam fragment ścieżki co dla rodzica.
Mam nadzieję, że pomogłem chociaż trochę...