|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Mar 2011
Messaggi: 125
|
[Python] Salvare e rigenerare Alberi
Sono all''ultimo esercizio di Pensare in Python, e non da pochi giorni, siccome mi sa che mi sono impelagato seguendo la strada non esattamente più consigliabile, che tuttavia non riesco a capire perché non funzioni.
Ho questo tipo di TDA: Codice:
class Albero: def __init__(self, Contenuto = None, Sinistra = None, Destra = None): self.Contenuto = Contenuto self.Sinistra = Sinistra self.Destra = Destra def __str__(self): return str(self.Contenuto) Codice:
def SalvaAlbero(Albero, Livello = 0): if Albero == None: return SalvaAlbero(Albero.Destra, Livello+1) if Albero.Destra == None and Albero.Sinistra != None: f.write(' '*Livello + ' ' + "\n") if Albero.Destra != None and Albero.Sinistra == None: f.write(' '*Livello + ' ' + "\n") else: f.write(' '*Livello + str(Albero.Contenuto)) if "\n" not in Albero.Contenuto: f.write("\n") SalvaAlbero(Albero.Sinistra, Livello+1) Codice:
def Componi(): file = f.readlines() i = 0 while i < len(file): stringa = file[i] if stringa[0] != " ": stringa = stringa[0:len(stringa)-1] Radice = Albero(stringa) del file[i] else: i += 1 Scorri(Radice, file, Spazio = " ") return Radice def Scorri(Radice, file, Spazio = " "): if Radice == None: return i = 0 while i < len(file): if Spazio in file[i] and Spazio + " " not in file[i]: stringa = file[i] if Spazio == stringa[0:len(Spazio)]: stringa = stringa[0:len(stringa)-1] stringa = stringa[0:len(Spazio)].replace(" ", "") + stringa[len(Spazio):len(stringa)] Radice.Destra = Albero(stringa) del file[i] break else: continue if file[i] == Spazio + " ": Radice.Destra = None break else: i += 1 i = 0 while i < len(file): if Spazio in file[i] and Spazio + " " not in file[i]: stringa = file[i] if Spazio == stringa[0:len(Spazio)]: stringa = stringa[0:len(stringa)-1] stringa = stringa[0:len(Spazio)].replace(" ", "") + stringa[len(Spazio):len(stringa)] Radice.Sinistra = Albero(stringa) del file[i] break else: continue if file[i] == Spazio + " ": Radice.Sinistra = None break else: i += 1 Scorri(Radice.Destra, file, Spazio + " ") Scorri(Radice.Sinistra, file, Spazio + " ") f = open("/home/meurem/Scrivania/SaveTree", "w") Radice = Albero("a", Albero("b", Albero("3", Albero("7"), Albero("9"))), Albero("c", Albero("4", Albero("8")), Albero("6", Albero("12"), Albero("14")))) SalvaAlbero(Radice) f.close() f = open("/home/meurem/Scrivania/SaveTree", "r") Tree = Componi() print Tree #a print Tree.Sinistra #b print Tree.Destra #c print Tree.Sinistra.Sinistra #3 print Tree.Sinistra.Destra #None print Tree.Sinistra.Sinistra.Sinistra #7 print Tree.Sinistra.Sinistra.Destra #9 print Tree.Destra.Destra #6 print Tree.Destra.Destra.Destra # 14 print Tree.Destra.Destra.Sinistra #12 print Tree.Destra.Sinistra #4 print Tree.Destra.Sinistra.Sinistra #8 print Tree.Destra.Sinistra.Destra #None Codice:
a b c 3 None None 6 14 12 4 8 [Finished in 0.0s] |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Mar 2011
Messaggi: 125
|
UP
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:19.