From bf96cac66f3cdc7e2e1fbf6e6783721865611556 Mon Sep 17 00:00:00 2001 From: Pavel 'LEdoian' Turinsky Date: Wed, 18 Mar 2020 22:40:06 +0100 Subject: [PATCH] Treelib: get_next_brother_of_type --- seminar/treelib.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/seminar/treelib.py b/seminar/treelib.py index 8cf01660..c1b5531b 100644 --- a/seminar/treelib.py +++ b/seminar/treelib.py @@ -77,6 +77,11 @@ def me_and_right_brothers(node): yield current current = current.succ +def right_brothers(node): + generator = me_and_right_brothers(node.succ) + for item in generator: + yield item + # Generátor všech sourozenců (vč. sám sebe) def all_brothers(node): # Najdeme prvního bratra @@ -103,9 +108,12 @@ def all_children(node): ## Filtrační hledání # Najdi dalšího bratra nějakého typu, nebo None. # hledá i podtřídy, i.e. get_next_brother_of_type(neco, TreeNode) je prostě succ. -def get_next_brother_of_type(current, type): - pass -def get_prev_brother_of_type(current, type): +def get_next_brother_of_type(node, type): + for current in right_brothers(node) + if isinstance(current, type): + return current + +def get_prev_brother_of_type(node, type): pass # Totéž pro "the-right-order" pořadí