Treelib: Fix all_brothers, all_proper_brothers
This commit is contained in:
		
							parent
							
								
									d01c157235
								
							
						
					
					
						commit
						8fcb1b0871
					
				
					 1 changed files with 17 additions and 2 deletions
				
			
		|  | @ -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…
	
		Reference in a new issue
	
	 Pavel 'LEdoian' Turinsky
						Pavel 'LEdoian' Turinsky