|
|
@ -181,10 +181,44 @@ def create_node_before(some, arguments, but, i, dont, know, which, yet): |
|
|
|
def swap(node, other): |
|
|
|
raise NotImplementedError("YAGNI (You aren't gonna need it).") |
|
|
|
|
|
|
|
def swap_pred(node): |
|
|
|
# Exception, kterou některé metody při špatném použití mohou házet |
|
|
|
# Hlavní důvod je možnost informovat o selhání, aby se příslušný problém dal zobrazit na frontendu, |
|
|
|
class TreeLibError(RuntimeError): |
|
|
|
pass |
|
|
|
|
|
|
|
def swap_pred(node): |
|
|
|
if node is None: |
|
|
|
raise TreeLibError("Nelze přesunout None. Tohle by se nemělo stát.") |
|
|
|
pred = safe_pred(node) |
|
|
|
if pred is None: |
|
|
|
raise TreeLibError("Nelze posunout vlevo, není tam žádný další uzel.") |
|
|
|
pre_pred = safe_pred(pred) |
|
|
|
succ = node.succ |
|
|
|
|
|
|
|
if pre_pred is not None: |
|
|
|
pre_pred.succ = node |
|
|
|
pre_pred.save() |
|
|
|
node.succ = pred |
|
|
|
node.save() |
|
|
|
pred.succ = succ |
|
|
|
pred.save() |
|
|
|
|
|
|
|
def swap_succ(node): |
|
|
|
pass |
|
|
|
if node is None: |
|
|
|
raise TreeLibError("Nelze přesunout None. Tohle by se nemělo stát.") |
|
|
|
succ = node.succ |
|
|
|
if succ is None: |
|
|
|
raise TreeLibError("Nelze posunout vpravo, není tam žádný další uzel") |
|
|
|
pred = safe_pred(node) |
|
|
|
post_succ = succ.succ |
|
|
|
|
|
|
|
if pred is not None: |
|
|
|
pred.succ = succ |
|
|
|
pred.save() |
|
|
|
succ.succ = node |
|
|
|
succ.save() |
|
|
|
node.succ = post_succ |
|
|
|
node.save() |
|
|
|
|
|
|
|
# Rotace stromu |
|
|
|
# Dokumentace viz wiki: |
|
|
|