|
|
@ -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) |
|
|
|