-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpreorder_tree.py
22 lines (19 loc) · 906 Bytes
/
preorder_tree.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def crea_albero(node = 'G'):
albero = {node : {'genitore' : None, 'figlio_destro' : None, 'figlio_sinistro' : None}}
return albero
def aggiungi_nodo(albero, nodo, genitore, verso):
if nodo not in albero and genitore in albero and not albero[genitore][verso]:
albero[nodo] = {'genitore' : genitore, 'figlio_destro' : None, 'figlio_sinistro' : None}
albero[genitore][verso] = nodo
def preorder(albero, radice, visitati = list()):
if radice:
visitati.append(radice)
if albero[radice]['figlio_sinistro']:
preorder(albero, albero[radice]['figlio_sinistro'], visitati)
if albero[radice]['figlio_destro']:
preorder(albero, albero[radice]['figlio_destro'], visitati)
return visitati
tree = crea_albero()
aggiungi_nodo(tree, 'F', 'G', 'figlio_destro')
aggiungi_nodo(tree, 'E', 'G', 'figlio_sinistro')
print(preorder(tree, 'G'))