Trova i duplicati nella lista a puntatori in
Da una lista a puntatori
p -> h 3 8 2 4 4 8 -> //
Costruire da una lista a puntatori con solo i duplicati della prima
q -> 4 8 -> //
Descrizione a parole
- Convertire la linked list in una lista di Python,
- ordinare la lista,
- trovare i duplicati nella lista creando una nuova lista, (trucco dell’ iterazione con confronto tra prev current e next)
- convertire la nuova lista in una linked list.
Python
linked_list_di_duplicati(p):
A = []
while p:
A.append(p.value)
p = p.next
A.sort()
for i in range(len(a)-1):
if (i == 0 or A[i]!=A[i-1]) and (A[i] == A[i+1]):
q = Nodo(A[i], q)
return q
Costo computazionale
- Costo per convertire
- Costo per trovare i duplicati e creare la linked list
- Costo per convertire
Costo totale
Restituire il numero nodi dell’albero che hanno esattamente due figli, entrambi dallo stesso valore in
Descrizione a parole
Visitare ricorsivamente tutti i nodi, controllando se hanno esattamente due figli != None
dallo stesso valore.
Python
def visita(nodo):
if nodo == None:
return 0
da_contare = 0
if (nodo.left and nodo.right) and nodo.left.key == nodo.right.key:
da_contare = 1
return visita(nodo.left) + visita(nodo.right) + da_contare
Costo computazionale
Il costo è perché tutti i nodi devono essere visitati. Verifica con l’equazione di ricorrenza: