Dato un albero di nodi rappresentato tramite il vettore dei padri e un nodo , progettare un algoritmo che in tempo produce la lista dei nodi presenti nel sottoalbero radicato in .
def salbero(P):
n = len(P)
alb = [[] for _ in range(n)]
for i in range(n):
if P[i] != i: alb[P[i]].append(i)
return alb
def DFS(G, x, sottoalbero):
sottoalbero.append(x)
for i in G[x]:
DFS(G, i, sottoalbero)
return sottoalbero
G = salbero(P)
sottoalbero = DFS(G, x, [])
- salbero è
- è un albero, quindi per la DFS