Vi ammorbo ancora con gli alberi. Devo fare una funzione per trovare il path di
una qualsiasi foglia di un albero.
Per fare ciò ho pensato di inserire nella classe che definisce l’albero un
campo nodoGenitore, così, facendo la ricerca di un nodo per nome, quando trovo
il nodo che mi interessa, vedo chi è il nodo padre e vado a ritroso fino alla
radice e trovo il path completo della foglia.
Mi accade però una cosa strana, di sicuro sbaglio qualcosa io, l’init della
classe è questo:
def __init__(self,w):
self.nomeNodo = w
self.sottoNodi = []
self.nodoGenitore=None
Quindi aggiungo i nodi all’albero con questa funzione:
#Genera l'albero di parole
def _generaAlbero(word):
root = WNode(word)
listaNodi=_generaListaParole(word,root)
for name in listaNodi:
root.sottoNodi += [_generaAlbero(name.nomeNodo)]
return root
#Genera lista parole lecite
def _generaListaParole(word,level):
ret=[]
nomiNodi=[]
alfabeto='abcdefghijklmnopqrstuvwxyz'
for j in range(0,len(word)+1):
for i in range(0,len(alfabeto)):
generata = word[0:j]+alfabeto[i] + word[j:]
if _BinarySearch(generata)==True:
inLista=generata in nomiNodi
if inLista==False:
nomiNodi.append(generata)
tmpNode = WNode(generata)
tmpNode.nodoGenitore=level
print tmpNode.nodoGenitore.nomeNodo
ret.append(tmpNode)
return ret
word è una stringa e level un nodo. La funzione durante l’esecuzione nel
terminale mi stampa il nome del nodo genitore in modo corretto quando faccio:
print tmpNode.nodoGenitore.nomeNodo
Quando però vado a fare la ricerca della parola con questa funzione
def path(self,w):
self._path(self,w)
def _path(self,root,w):
for node in root.sottoNodi:
if(node.nomeNodo==w):
print "Trovato "+node.nomeNodo
print node.sottoNodi
print " "+node.nodoGenitore.nomeNodo
break
else:
self._path(node,w)
python mi dice che non può fare
print " "+node.nodoGenitore.nomeNodo
in quanto il valore è None, ma in teoria dovrebbe contenere il nodo padre, solo
la root dovrebbe essere vuota e il nodo che gli passo non è una root
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python