Dalo by se to tedy resit nejak takto (nemel jsem to cas jeste otestovat a mozna nevidim chybu):
Existujici list:
1 | 1 12
1.3 | 2 7
1.3.2 | 3 4
1.3.1 | 5 6
1.2 | 8 9
1.1 | 10 11
Se bude zobrazovat jako pri "order right"
///////////
1
1.1
1.2
1.3
1.3.1
1.3.2
//////////
Pozadavek: celou mnozinu 1.3 chci zobrazovat na zacatku seznamu v rodici 1. Presun nesmi negativne ovlivnit jine, nez mnoziny rodicovskeho intervalu.
1) Presouvane prvky oznacit pro tranzit odectenim od nuly
1 | 1 12
1.3 | -2 -7
1.3.2 | -3 -4
1.3.1 | -5 -6
1.2 | 8 9
1.1 | 10 11
2) V rodici odecist misto = poctu odebranych prvku +1
lft > 7 and lft < 12 lft= lft - 6
rgt > 7 and rgt < 12 rgt= rgt - 6
1 | 1 12
1.3 | -2 -7
1.3.2 | -3 -4
1.3.1 | -5 -6
1.2 | 2 3
1.1 | 4 5
3) A na zaver vratit prvky z tranzitu odectenim od nuly a pricist rgt posledniho prvku v rodici tj. 5
x<0 lft=0 - (lft)+5-1
x<0 rgt=0 -(rgt)+5-1
1 | 1 12
1.3 | 6 11
1.3.2 | 7 8
1.3.1 | 9 10
1.2 | 2 3
1.1 | 4 5
Se bude zobrazovat jako pri "order right"
///////////
1
1.3
1.3.1
1.3.2
1.1
1.2
//////////
- Kontroly:
;na konci zmeny je treba potvrdit ze prvek s lft=1 a rgt=12 stale existuje
;zadne prvky nemaji lft<0 and rgt<0
;zadne cislo lft ani rgt se nevyskytuje > 1