From 0e2784d621dd6f3867d7b595ae33922e279a7f25 Mon Sep 17 00:00:00 2001 From: Pavel 'LEdoian' Turinsky Date: Thu, 19 Mar 2020 01:47:19 +0100 Subject: [PATCH] Treelib: rotace stromu --- seminar/treelib.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/seminar/treelib.py b/seminar/treelib.py index 26b77d1d..260a8bac 100644 --- a/seminar/treelib.py +++ b/seminar/treelib.py @@ -235,6 +235,52 @@ def swap_succ(node): # Dokumentace viz wiki: # (lower bude jednoduchá rotace, ne mega, existence jednoduché rotace mi došla až po nakreslení obrázku) def raise_node(node): + if node is None: + raise TreeLibError("Nelze přesunout None. Tohle by se nemělo stát.") + # Pojmenování viz WIKI (as of 2020-03-19 01:33:44 GMT+1) + # FIXME: Velmi naivní, chybí error checky + D = node + C = get_parent(D) + E = C.succ + subtree4_head = D.first_child + subtree4_tail = last_brother(subtree4_head) + subtree3P_head = D.succ + subtree3L_head = C.first_child + subtree3L_tail = safe_pred(D) + + # Prostor pro motlitbu... pass + + # Amen. + C.succ = D + C.save() + D.succ = E + D.save() + subtree3L_tail.succ = None + subtree3L_tail.save() + subtree4_tail.succ = subtree3P.head + subtree4_tail.save() + + # To by mělo být všechno... + def lower_node(node): + if node is None: + raise TreeLibError("Nelze přesunout None. Tohle by se nemělo stát.") + # Pojmenování viz WIKI (as of 2020-03-19 01:33:44 GMT+1) + # FIXME: Velmi naivní, chybí error checky + C = node + D = C.succ + B = safe_pred(C) + subtree2_head = B.first_child + subtree2_tail = last_brother(subtree2_head) + + # Prostor pro motlitbu... pass + + # Amen. + B.succ = D + B.save() + subtree2_tail.succ = C + subtree2_tail.save() + + # To by mělo být všechno...