Browse Source

Treelib: generátor a funkce na hledání následujících nodů

export_seznamu_prednasek
Pavel 'LEdoian' Turinsky 5 years ago
parent
commit
78a667b42c
  1. 33
      seminar/treelib.py

33
seminar/treelib.py

@ -107,6 +107,12 @@ def all_children(node):
yield br yield br
# Generátor následníků v "the-right-order" # Generátor následníků v "the-right-order"
# Bez tohoto vrcholu
def all_following(node):
current = general_next(node)
while current is not None:
yield current
current = general_next(current)
## Filtrační hledání ## Filtrační hledání
# Najdi dalšího bratra nějakého typu, nebo None. # Najdi dalšího bratra nějakého typu, nebo None.
@ -115,15 +121,32 @@ def get_next_brother_of_type(node, type):
for current in right_brothers(node): for current in right_brothers(node):
if isinstance(current, type): if isinstance(current, type):
return current return current
return None
def get_prev_brother_of_type(node, type): def get_prev_brother_of_type(node, type):
pass # Na tohle není rozumný generátor, ani ho asi nechceme, prostě to implementujeme cyklem.
current = node
while safe_pred(current) is not None:
current = safe_pred(current)
if isinstance(current, type):
return current
return None
# Totéž pro "the-right-order" pořadí # Totéž pro "the-right-order" pořadí
def get_next_node_of_type(current, type): def get_next_node_of_type(node, type):
pass for cur in all_folowing(node):
def get_next_node_of_type(current, type): if isinstance(cur, type):
pass return cur
return None
def get_prev_node_of_type(node, type):
# Na tohle není rozumný generátor, ani ho asi nechceme, prostě to implementujeme cyklem.
current = node
while general_prev(current) is not None:
current = general_prev(current)
if isinstance(current, type):
return current
return None

Loading…
Cancel
Save