Escolar Documentos
Profissional Documentos
Cultura Documentos
Fórum Doar
1 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
Fórum Doar
2 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
• Exemplos de árvore
Definição
Ao começar a programar, é comum entender melhor as estruturas
de dados lineares do que estruturas de dados como árvores e grafos.
3 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
Fórum Doar
Vamos examinar
Aprenda a programarexemplos dadevida
— currículo gratuito real!
3 mil horas
O que quero dizer quando digo de modo hierárquico?
TK, Yuji, Bruno e Kaio são os �lhos dos meus pais (eu e meus irmãos).
4 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
Fórum Doar
A tag HTML contém outras tags. Temos uma tag head e uma tag
5 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
6 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
Fórum Doar
As folhas são os últimos nós de uma árvore. Elas são os nós sem
�lhos. Como árvores reais, temos a raiz , os ramos e, �nalmente, as
folhas .
7 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
Fórum Doar
Resumo da terminologia
• A raiz é o nó mais alto da árvore
8 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
até aAprenda
raiz a programar — currículo gratuito de 3 mil horas
Árvores binárias
Agora, vamos discutir um tipo especí�co de árvore . Nós a
chamamos de árvore binária .
9 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
implementamos uma árvore binária é o fato de ela ser uma coleção Doar
Fórum
de nós. Cada nó tem três atributos: value , left_child (o �lho da
Aprenda a programar — currículo gratuito de 3 mil horas
esquerda) e right_child (o �lho da direita).
Como implementamos uma árvore binária simples que inicializa com
estas três propriedades?
class BinaryTree:
def __init__(self, value):
self.value = value
self.left_child = None
self.right_child = None
Por quê?
Porque quando criamos nosso nó , ele não tem �lhos. Temos apenas
os dados do nó.
Vamos testá-lo:
tree = BinaryTree('a')
print(tree.value) # a
print(tree.left_child) # None
print(tree.right_child) # None
10 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
Fórum Doar
11 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
Fórum Doar
Feito. :)
12 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
• o filho da esquerda de a é o nó b
• o filho da direita de a é o nó c
• o filho da esquerda de c é o nó e
• o filho da direita de c é o nó f
13 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
Fórum Doar
b_node = a_node.left_child
b_node.insert_right('d')
c_node = a_node.right_child
c_node.insert_left('e')
c_node.insert_right('f')
d_node = b_node.right_child
e_node = c_node.left_child
f_node = c_node.right_child
print(a_node.value) # a
print(b_node.value) # b
print(c_node.value) # c
print(d_node.value) # d
print(e_node.value) # e
print(f_node.value) # f
14 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
Por quê?
15 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
8. Feito.
Pré-ordem
Isso é exatamente o que �zemos no exemplo acima.
1. Imprimir o valor do nó .
16 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
Fórum
2. Ir para o filho da esquerda e imprimi-lo se, e somente se, Doar
tiverAprenda
um filho da esquerda
a programar .
— currículo gratuito de 3 mil horas
def pre_order(self):
print(self.value)
if self.left_child:
self.left_child.pre_order()
if self.right_child:
self.right_child.pre_order()
Em ordem
17 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
Fórum Doar
Começamos da esquerda primeiro, depois pegamos o do meio e, por
Aprenda a programar — currículo gratuito de 3 mil horas
�m, o da direita.
def in_order(self):
if self.left_child:
self.left_child.in_order()
print(self.value)
if self.right_child:
self.right_child.in_order()
2. Imprima o valor do nó
Pós-ordem
18 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
Fórum Doar
def post_order(self):
if self.left_child:
self.left_child.post_order()
if self.right_child:
self.right_child.post_order()
print(self.value)
3. Imprima o valor do nó
19 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
20 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
def bfs(self):
queue = Queue()
queue.put(self)
if current_node.left_child:
queue.put(current_node.left_child)
if current_node.right_child:
queue.put(current_node.right_child)
Como funciona?
21 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
Fórum Doar
22 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
Vamos começar.
24 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
• 21 é Aprenda
menor do que 50, portanto
a programar insira
— currículo 21 node
gratuito lado esquerdo.
3 mil horas
25 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
Fórum Doar
Vamos analisar.
class BinarySearchTree:
def __init__(self, value):
self.value = value
self.left_child = None
self.right_child = None
26 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
27 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
Fórum Doar
Vamos analisar.
28 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
Fórum Doar
1. Começamos com o nó raiz como nosso nó atual. O valor
dadoAprenda
é menorado
programar — currículo
que o valor do nó gratuito
atual? Sedesim,
3 mil horas
class BinarySearchTree:
def __init__(self, value):
self.value = value
self.left_child = None
self.right_child = None
29 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
Fórum Doar
Como testamos isso?
Aprenda a programar — currículo gratuito de 3 mil horas
bst = BinarySearchTree(15)
bst.insert_node(10)
bst.insert_node(8)
bst.insert_node(12)
bst.insert_node(20)
bst.insert_node(17)
bst.insert_node(25)
bst.insert_node(19)
print(bst.find_node(15)) # True
print(bst.find_node(10)) # True
print(bst.find_node(8)) # True
print(bst.find_node(12)) # True
print(bst.find_node(20)) # True
print(bst.find_node(17)) # True
print(bst.find_node(25)) # True
print(bst.find_node(19)) # True
30 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
Fórum Doar
Sim, ele funciona para esses valores dados! Vamos testar para um
valor queAprenda
não existe em nossa
a programar —árvore degratuito
currículo busca binária.
de 3 mil horas
print(bst.find_node(0)) # False
# |50| |50|
# / \ / \
# |30| |70| (DELETE 20) ---> |30| |70|
# / \ \
# |20| |40| |40|
31 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
Fórum Doar
# |50| |50|
# / \ / \
# |30| |70| (DELETE 30) ---> |40| |70|
# / \ /
# |20| |40| |20|
32 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
return True
33 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
Fórum
3. Da linha 2 à linha 9: começamos a procurar o nó que tem o Doar
34 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
Fórum
11. Da linha 25 à linha 27: cobrimos o nó com apenas um filho Doar
( filho da direita
Aprenda ), e ele—écurrículo
a programar o filhogratuito
da direita dohoras
de 3 mil seu
pai . Colocamos o filho da direita do pai no filho da
direita do nó (o único filho que ele tem).
def clear_node(self):
self.value = None
self.left_child = None
self.right_child = None
def find_minimum_value(self):
if self.left_child:
return self.left_child.find_minimum_value()
else:
return self.value
35 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
Fórum Doar
# |15|
# / \
# |10| |20|
# / \ / \
# |8| |12| |17| |25|
# \
# |19|
# |15|
# / \
# |10| |20|
# \ / \
# |12| |17| |25|
# \
# |19|
36 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
bst.pre_order_traversal()
Fórum Doar
# |15|
Aprenda a programar — currículo gratuito de 3 mil horas
# / \
# |10| |20|
# \ / \
# |12| |19| |25|
# |19|
# / \
# |10| |20|
# \ \
# |12| |25|
37 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
38 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
Se você leu até aqui, envie uma mensagem no Twitter para mostrar
que você se importa com o trabalho. Agradeça no Twitter
As doações feitas ao freeCodeCamp vão para nossas iniciativas educacionais e ajudam a pagar
servidores, serviços e a equipe.
39 of 40 20/06/2023, 13:54
Tudo o que você precisa saber sobre estruturas de dados em árvore https://www.freecodecamp.org/portuguese/news/tudo-o-que-voce-precis...
Nossa instituição
40 of 40 20/06/2023, 13:54