From 8fcb1b0871018ddf6387288d0881f5094cb1c521 Mon Sep 17 00:00:00 2001 From: Pavel 'LEdoian' Turinsky Date: Wed, 18 Mar 2020 22:32:02 +0100 Subject: [PATCH] Treelib: Fix all_brothers, all_proper_brothers --- seminar/treelib.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) 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)