Estruturas de Dados
´
´
Inserindo Nós
nó pai
nulo?
nó raiz
nulo?
nó raiz = novo nó
criar novo nó
fim
incrementa tamanho
da árvore
valor >
valor do
nó pai?
nó pai = nó raiz
sim
não
início
não
sim
direita
do nó pai
nula?
direita do nó pai =
novo nó
esquerda
do nó pai
nula?
esquerda do nó pai =
novo nó
sim
não
recursão passando valor
e direita do nó pai
recursão passando valor
e esquerda do nó pai
sim sim
não não
insert (value, parent) {
const inserted = new Node(value)
if (parent == null) {
if (this.root == null){
this.root = inserted
this.length++
return
} else {
parent = this.root
}
}
// Continua...
}
JavaScript
Inserindo Nós
// Continuação:
if (value > parent.value) {
if (parent.right == null) {
parent.right = inserted
this.length++
} else {
this.insert(value, parent.right)
}
} else if (value < parent.value) {
if (parent.left == null) {
parent.left = inserted
this.length++
} else {
this.insert(value, parent.left)
}
}
JavaScript
Inserindo Nós
visitapré-ordem
root
2
41
6
8
7
1. Pegue um nó
(na dúvida, a raiz)
2. Visite o nó
3. Visite a esquerda
(recursivamente)
4. Visite a direita
(recursivamente)
1
2
3
4
Resultado:
[6, 1, 2, 4, 7, 8]
5
6
preOrder (node = this.root) {
let result = []
result.push(node.value)
if (node.left) {
result.push(...this.preOrder(node.left))
}
if (node.right) {
result.push(...this.preOrder(node.right))
}
return result
}
JavaScript
Função preOrder
Leia mais sobre o Operador Spread para entender como o Array retornado pela recursão é inserido:
https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Operators/Spread_operator
visitapós-ordem
root
2
41
6
8
7
1. Pegue um nó
(na dúvida, a raiz)
2. Visite a esquerda
(recursivamente)
3. Visite a direita
(recursivamente)
4. Visite o nó 1
2
3
Resultado:
[1, 2, 4, 7, 8, 6]
4
5
6
postOrder (node = this.root) {
let result = []
if (node.left) {
result.push(...this.postOrder(node.left))
}
if (node.right) {
result.push(...this.postOrder(node.right))
}
result.push(node.value)
return result
}
JavaScript
Função postOrder
visitaem-ordem
root
2
41
6
8
7
1. Pegue um nó
(na dúvida, a raiz)
2. Visite a esquerda
(recursivamente)
3. Visite o nó
4. Visite a direita
(recursivamente) 1
2
3
4
5
6
Resultado:
[1, 2, 4, 6, 7, 8]
inOrder (node = this.root) {
let result = []
if (node.left) {
result.push(...this.inOrder(node.left))
}
result.push(node.value)
if (node.right) {
result.push(...this.inOrder(node.right))
}
return result
}
JavaScript
Função inOrder
buscandonós
root
2
41
6
8
7
1. Pegue um nó alvo
(na dúvida, a raiz)
2. Se o valor procurado é maior
que o do nó, visite a direita
3. Se o valor procurado é menor
que o do nó, visite a esquerda
4. Retorne true
quando achar o valor
5. Retorne false
quando não tiver mais
para onde ir
Exemplo: 4
Buscando Nós
fim
valor >
valor do
nó?
não
início
recursão passando o
valor e a direita do nó
recebe valor
procurado
recebe nó alvo
(ou raiz)
valor <
valor do
nó?sim
direita
do nó
nula?
sim
retorne false
retorne o resultado
da recursão
não
não
recursão passando o
valor e a esquerda do nó
esquerda
do nó
nula?sim
retorne false
retorne o resultado
da recursão
sim
valor =
valor do
nó?
retorne true
retorne false
sim
não
não
Estruturas de Dados - Árvores Binárias (Binary Tree) - Parte 2

Mais conteúdo relacionado

PDF
Estruturas de Dados - Árvores Multivias (Multiway Tree)
PDF
Estruturas de Dados - Tabelas de Espalhamento (Hash Table)
PDF
Estruturas de Dados - Árvores Binárias (Binary Tree) - Parte 1
PDF
Estruturas de Dados - Pilhas (Stack)
PDF
Estruturas de Dados - Filas (Queue)
PDF
Estruturas de Dados - Listas Encadeadas (Linked List)
PDF
17 arvores binarias de busca
PPT
Operações em Árvores Binárias
Estruturas de Dados - Árvores Multivias (Multiway Tree)
Estruturas de Dados - Tabelas de Espalhamento (Hash Table)
Estruturas de Dados - Árvores Binárias (Binary Tree) - Parte 1
Estruturas de Dados - Pilhas (Stack)
Estruturas de Dados - Filas (Queue)
Estruturas de Dados - Listas Encadeadas (Linked List)
17 arvores binarias de busca
Operações em Árvores Binárias

Último (20)

PDF
DECISÃO (2).pdf Derrota histórica do Sintero expõe racha interno e fragilidad...
PDF
Historia-da-Psicologia-Rumos-e-percursos.pdf
PPTX
entorseestadodechoque. Aula de primeiros socorros
PDF
_Filosofia_-_SLIDES___questões.pdf.pptx (3).pdf
PPTX
O amor e a mulher - Romantismo no Brasil.pptx
PPTX
125511 - Aula 1 - América portuguesa antes da conquista patrimônio e preserva...
PPT
Os Grandes Períodos Históricos UESC 2009.1
PDF
Mudanças Climáticas. Texto e atividade
PDF
Solucões-inovadoras-para-reduzir-desigualdades-educacionais (2).pdf
PPTX
Aulwbrivekwohevjeoeiiegeievjebvejeihegeueh
DOCX
Aula 3- Direitos Humanos e Prevenção à Violência .docx
PDF
morfologia5.pdfllllllllllllllllllllllllllll
PPTX
Basic life Support - suporte tecnico de vida
PPTX
Adaptação Curricular para Alunos com Deficiências - EMEB. ODIR (1).pptx
PDF
historia-e-geografia-do-amapa.pdf slides
PDF
Fronteira escrito por José de Souza Martins
PPTX
02-simulado-saeb-9o-ano-matematica1.pptx
PPTX
Primeiros Socorros. Aula 1 VEROUVIRSENTIR.pptx
PDF
639039693-CURSO-DE-PORTUGUES-Prof-Deivid-Xavier.pdf
PPTX
História da enfermagem 14.07.2025_040859.pptx
DECISÃO (2).pdf Derrota histórica do Sintero expõe racha interno e fragilidad...
Historia-da-Psicologia-Rumos-e-percursos.pdf
entorseestadodechoque. Aula de primeiros socorros
_Filosofia_-_SLIDES___questões.pdf.pptx (3).pdf
O amor e a mulher - Romantismo no Brasil.pptx
125511 - Aula 1 - América portuguesa antes da conquista patrimônio e preserva...
Os Grandes Períodos Históricos UESC 2009.1
Mudanças Climáticas. Texto e atividade
Solucões-inovadoras-para-reduzir-desigualdades-educacionais (2).pdf
Aulwbrivekwohevjeoeiiegeievjebvejeihegeueh
Aula 3- Direitos Humanos e Prevenção à Violência .docx
morfologia5.pdfllllllllllllllllllllllllllll
Basic life Support - suporte tecnico de vida
Adaptação Curricular para Alunos com Deficiências - EMEB. ODIR (1).pptx
historia-e-geografia-do-amapa.pdf slides
Fronteira escrito por José de Souza Martins
02-simulado-saeb-9o-ano-matematica1.pptx
Primeiros Socorros. Aula 1 VEROUVIRSENTIR.pptx
639039693-CURSO-DE-PORTUGUES-Prof-Deivid-Xavier.pdf
História da enfermagem 14.07.2025_040859.pptx
Anúncio
Anúncio

Estruturas de Dados - Árvores Binárias (Binary Tree) - Parte 2

  • 2. Inserindo Nós nó pai nulo? nó raiz nulo? nó raiz = novo nó criar novo nó fim incrementa tamanho da árvore valor > valor do nó pai? nó pai = nó raiz sim não início não sim direita do nó pai nula? direita do nó pai = novo nó esquerda do nó pai nula? esquerda do nó pai = novo nó sim não recursão passando valor e direita do nó pai recursão passando valor e esquerda do nó pai sim sim não não
  • 3. insert (value, parent) { const inserted = new Node(value) if (parent == null) { if (this.root == null){ this.root = inserted this.length++ return } else { parent = this.root } } // Continua... } JavaScript Inserindo Nós
  • 4. // Continuação: if (value > parent.value) { if (parent.right == null) { parent.right = inserted this.length++ } else { this.insert(value, parent.right) } } else if (value < parent.value) { if (parent.left == null) { parent.left = inserted this.length++ } else { this.insert(value, parent.left) } } JavaScript Inserindo Nós
  • 5. visitapré-ordem root 2 41 6 8 7 1. Pegue um nó (na dúvida, a raiz) 2. Visite o nó 3. Visite a esquerda (recursivamente) 4. Visite a direita (recursivamente) 1 2 3 4 Resultado: [6, 1, 2, 4, 7, 8] 5 6
  • 6. preOrder (node = this.root) { let result = [] result.push(node.value) if (node.left) { result.push(...this.preOrder(node.left)) } if (node.right) { result.push(...this.preOrder(node.right)) } return result } JavaScript Função preOrder Leia mais sobre o Operador Spread para entender como o Array retornado pela recursão é inserido: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Operators/Spread_operator
  • 7. visitapós-ordem root 2 41 6 8 7 1. Pegue um nó (na dúvida, a raiz) 2. Visite a esquerda (recursivamente) 3. Visite a direita (recursivamente) 4. Visite o nó 1 2 3 Resultado: [1, 2, 4, 7, 8, 6] 4 5 6
  • 8. postOrder (node = this.root) { let result = [] if (node.left) { result.push(...this.postOrder(node.left)) } if (node.right) { result.push(...this.postOrder(node.right)) } result.push(node.value) return result } JavaScript Função postOrder
  • 9. visitaem-ordem root 2 41 6 8 7 1. Pegue um nó (na dúvida, a raiz) 2. Visite a esquerda (recursivamente) 3. Visite o nó 4. Visite a direita (recursivamente) 1 2 3 4 5 6 Resultado: [1, 2, 4, 6, 7, 8]
  • 10. inOrder (node = this.root) { let result = [] if (node.left) { result.push(...this.inOrder(node.left)) } result.push(node.value) if (node.right) { result.push(...this.inOrder(node.right)) } return result } JavaScript Função inOrder
  • 11. buscandonós root 2 41 6 8 7 1. Pegue um nó alvo (na dúvida, a raiz) 2. Se o valor procurado é maior que o do nó, visite a direita 3. Se o valor procurado é menor que o do nó, visite a esquerda 4. Retorne true quando achar o valor 5. Retorne false quando não tiver mais para onde ir Exemplo: 4
  • 12. Buscando Nós fim valor > valor do nó? não início recursão passando o valor e a direita do nó recebe valor procurado recebe nó alvo (ou raiz) valor < valor do nó?sim direita do nó nula? sim retorne false retorne o resultado da recursão não não recursão passando o valor e a esquerda do nó esquerda do nó nula?sim retorne false retorne o resultado da recursão sim valor = valor do nó? retorne true retorne false sim não não