Essa professora é inteligente demais! Eu não consigo acompanhar o ritmo dela!
Alguém me ajuda a entender a Aula 5
. Mais especificamente no vídeo Arvore Apresentacao parte 3
...
Aos 3:44
ela diz: "É tudo recursivo."
O que é isso?
E se puder comentar o código arquivo arvore.py
, pq eu me perdi todo quando ela colocou a função localiza_nodo()
nas 3 classes e, pra piorar, chamou essa função dentro da própria função...
Tô confuso!!!
PS: A professora é excelente, tá..? Só que essa aula foi demais pra mim!
Segue o código do arquivo arvore.py
:
from lista_duplamente_ligada import ListaDuplamenteLigada
class ListaDeNodos(ListaDuplamenteLigada):
def __init__(self):
super().__init__()
def imprimir(self, nivel):
atual = self.inicio
for i in range(0, self.quantidade):
atual.conteudo.imprimir(nivel)
atual = atual.proximo
def localizar_nodo(self, conteudo):
atual = self.inicio
for i in range(0, self.quantidade):
encontrado = atual.conteudo.localizar_nodo(conteudo)
if encontrado:
return encontrado
atual = atual.proximo
class Nodo:
def __init__(self, conteudo):
self.conteudo = conteudo
self.pai = None
self.filhos = None
def __repr__(self):
return self.conteudo
def imprimir(self, nivel = 0):
print("{}- {}".format(" "*nivel, self.conteudo))
if self.filhos:
self.filhos.imprimir(nivel + 1)
def inserir_filho(self, filho):
if self.filhos is None:
self.filhos = ListaDeNodos()
nodo = Nodo(filho)
self.filhos.inserir_no_fim(nodo)
def localizar_nodo(self, conteudo):
if conteudo == self.conteudo:
return self
if self.filhos:
return self.filhos.localizar_nodo(conteudo)
class Arvore:
def __init__(self, conteudo):
self.raiz = Nodo(conteudo)
def imprimir(self):
self.raiz.imprimir()
def localizar_nodo(self, conteudo):
return self.raiz.localizar_nodo(conteudo)
def inserir_nodo(self, pai, filho):
nodo_pai = self.localizar_nodo(pai)
if nodo_pai:
nodo_pai.inserir_filho(filho)