diff --git a/seminar/treelib.py b/seminar/treelib.py index def0f6da..946e61fd 100644 --- a/seminar/treelib.py +++ b/seminar/treelib.py @@ -65,14 +65,29 @@ def general_prev(node): # pred nyní nemá žádné potomky, takže je to poslední rekurzivní potomek původního předchůdce return pred -# Generátor bratrů +# Generátor pravých bratrů (konkrétně sebe a následujících potomků) # Generátor potomků níže spoléhá na to, že se tohle dá volat i s parametrem None. -def all_brothers(node): +def me_and_right_brothers(node): current = node while current is not None: yield current current = current.succ +# Generátor všech sourozenců (vč. sám sebe) +def all_brothers(node): + # Najdeme prvního bratra + fb = first_brother(node) + marb = me_and_all_brothers(fb) + for cur in marb: + yield cur + +def all_proper_brothers(node): + all = all_brothers(node) + for br in all: + if br is node: + continue + yield br + # Generátor potomků def all_children(node): brothers = all_brothers(node.first_child)