Browse Source

Treelib: Fix all_brothers, all_proper_brothers

export_seznamu_prednasek
Pavel 'LEdoian' Turinsky 5 years ago
parent
commit
8fcb1b0871
  1. 19
      seminar/treelib.py

19
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 # pred nyní nemá žádné potomky, takže je to poslední rekurzivní potomek původního předchůdce
return pred 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. # 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 current = node
while current is not None: while current is not None:
yield current yield current
current = current.succ 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ů # Generátor potomků
def all_children(node): def all_children(node):
brothers = all_brothers(node.first_child) brothers = all_brothers(node.first_child)

Loading…
Cancel
Save