image

Acesse bootcamps ilimitados e +650 cursos pra sempre

60
%OFF
Francileudo Oliveira
Francileudo Oliveira11/11/2022 14:07
Compartilhe

Estruturando dados: árvores em python na prática

  • #Estrutura de dados

Olá, seja muito bem vindo(a), nos artigos anteriores nós conhecemos na teoria um pouco sobre a estrutura chamada árvores: https://programacao-descomplicada.blogspot.com/2022/11/estruturando-dados-o-que-e-uma.html. Se revermos o artigo linkado anteriormente, podemos perceber que cada nó da árvore tem dois filhos, um da esquerda e o outro da direita, essas são as ligações da nossa árvore.

  Primeiro iremos criar nossa classe de árvore, tendo como primeira função a responsável por criar nossos nós. Abaixo podemos criar a raiz da nossa árvore e seus filhos, tendo um código final dessa forma:

class NoArvore:

def __init__(self, chave=None, esquerda=None, direita=None):

  self.chave = chave

  self.esquerda = esquerda

  self.direita = direita



raiz = NoArvore(3)

raiz.esquerda = NoArvore(5)

raiz.direita = NoArvore(1)

  No artigo anterior: https://programacao-descomplicada.blogspot.com/2022/11/estruturando-dados-arvore-binaria-de.html, eu mostrei uma imagem de uma árvore binária de busca, usando nossa classe de criar nós, vamos reproduzir ela em código:

raiz = NoArvore(40)

raiz.esquerda = NoArvore(20)

raiz.direita = NoArvore(60)



raiz.direita.esquerda = NoArvore(50)

raiz.direita.direita  = NoArvore(70)

raiz.esquerda.esquerda = NoArvore(10)

raiz.esquerda.direita = NoArvore(30)

  Agora, lembrando do que aprendemos no artigo sobre formas de percorrer nossa árvore: https://programacao-descomplicada.blogspot.com/2022/11/estrutrando-dados-formas-de-percorrer.html, no qual vamos ver agora a Em-ordem. Nele, começamos percorrendo a árvore na esquerda, depois visitamos a raiz e vamos para a direita.

def em_ordem(raiz):

if not raiz:

  return

em_ordem(raiz.esquerda)

print(raiz.chave)

em_ordem(raiz.direita)

  Colocamos essa função em_ordem fora da nossa classe, no qual passamos nossa raiz como parâmetro. A função irá descer a árvore até chegar no último nó esquerdo do lado esquerdo (10) e começar daí, obtendo o seguinte caminho: 10, 20, 30, 40, 50, 60, 70. 

  Com base no que vimos até aqui, será que você conseguiria desenvolver as funções pré-ordem e pós-ordem? Fica como exercício, vou ficando por aqui, um abraço e até a próxima.

Artigo Original: https://programacao-descomplicada.blogspot.com/2022/11/estruturando-dados-arvores-em-python-na.html

Compartilhe
Comentários (0)