sin5013 análise de algoritmos e estruturas de dados - Árvores · Árvores estrutura de dados...
TRANSCRIPT
![Page 1: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/1.jpg)
SIN5013Análise de Algoritmos e Estruturas de
Dados
Árvores
Prof. Luciano Antonio Digiampietri
![Page 2: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/2.jpg)
Árvores
Estrutura de dados composta de um nó chamado raiz, abaixodo qual estão as subárvores que compõem essa árvore.Cada nó possui um nó pai, exceto o nó raiz que não possui pai.
![Page 3: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/3.jpg)
Árvores
O número de subárvores de cada nó (analogamente, o númerode filhos de um nó) é chamado de grau desse nó.O grau máximo permitido para uma árvore identifica o tipo deárvore (binária, ternária, etc).Nós que não possuem filhos são chamados de folhas.Nós abaixo de um determinado nó são seus descendentes.
![Page 4: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/4.jpg)
ÁrvoresO nível do nó raiz é 0.A altura h de um nó é o comprimento do caminho mais longoentre ele e uma folha.A altura de uma árvore é a altura do nó raiz.A altura de um nó pode ser calculada como sendo 1 mais omáximo entre a altura de seus filhos.
![Page 5: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/5.jpg)
Árvores Binárias
Uma árvore binária é uma árvore em que, abaixo de cada nó,existem no máximo duas subárvores (cada nó terá, nomáximo, dois filhos).
![Page 6: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/6.jpg)
Árvores Binárias - Modelagem#include <stdio.h>
#include <stdlib.h>
#define true 1
#define false 0
typedef int bool;
typedef int TIPOCHAVE;
typedef struct aux {
TIPOCHAVE chave;
/* Dados armazenados vão aqui */
struct aux *esq, *dir;
} NO;
typedef NO* PONT;
![Page 7: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/7.jpg)
Árvores Binárias - Altura
int altura(PONT p){
if (!p) return -1;
else return 1 + max(altura(p->esq),altura(p->dir));
}
int max(int a, int b){
if (a>b) return a;
return b;
}
![Page 8: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/8.jpg)
Árvores Binárias - Número de Nós
int numeroNos(PONT raiz){
if (!raiz ) return 0;
return 1 + numeroNos(raiz->esq)
+ numeroNos(raiz->dir);
}
![Page 9: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/9.jpg)
Árvores Binárias - Percursos
Pré-ordemEm ordemPós-ordemEm nível / largura
![Page 10: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/10.jpg)
Árvores Binárias - Pré-ordem
void exibirArvorePreOrdem(PontNo raiz){
if (raiz == NULL) return;
printf("%i ",raiz->chave);
exibirArvorePreOrdem(raiz->esq);
exibirArvorePreOrdem(raiz->dir);
}
![Page 11: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/11.jpg)
Árvores Binárias - Pré-ordemvoid exibirArvorePreOrdem(PontNo raiz){
if (raiz == NULL) return;
printf("%i ",raiz->chave);
exibirArvorePreOrdem(raiz->esq);
exibirArvorePreOrdem(raiz->dir);
}
Resultado da execução: 15 8 2 12 23 20
![Page 12: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/12.jpg)
Árvores Binárias - Pré-ordemvoid exibirArvorePreOrdem(PontNo raiz){
if (raiz == NULL) return;
printf("%i ",raiz->chave);
exibirArvorePreOrdem(raiz->esq);
exibirArvorePreOrdem(raiz->dir);
}
Resultado da execução: 15 8 2 12 23 20
![Page 13: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/13.jpg)
Árvores Binárias - Em ordem
void exibirArvoreEmOrdem(PontNo raiz){
if (raiz == NULL) return;
exibirArvoreEmOrdem(raiz->esq);
printf("%i ",raiz->chave);
exibirArvoreEmOrdem(raiz->dir);
}
![Page 14: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/14.jpg)
Árvores Binárias - Em ordemvoid exibirArvoreEmOrdem(PontNo raiz){
if (raiz == NULL) return;
exibirArvoreEmOrdem(raiz->esq);
printf("%i ",raiz->chave);
exibirArvoreEmOrdem(raiz->dir);
}
Resultado da execução: 2 8 12 15 20 23. Resultado ordenadoapenas porque esta árvore é uma árvore de busca binária.
![Page 15: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/15.jpg)
Árvores Binárias - Em ordemvoid exibirArvoreEmOrdem(PontNo raiz){
if (raiz == NULL) return;
exibirArvoreEmOrdem(raiz->esq);
printf("%i ",raiz->chave);
exibirArvoreEmOrdem(raiz->dir);
}
Resultado da execução: 2 8 12 15 20 23. Resultado ordenadoapenas porque esta árvore é uma árvore de busca binária.
![Page 16: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/16.jpg)
Árvores Binárias - Pós-ordem
void exibirArvorePosOrdem(PontNo raiz){
if (raiz == NULL) return;
exibirArvorePosOrdem(raiz->esq);
exibirArvorePosOrdem(raiz->dir);
printf("%i ",raiz->chave);
}
![Page 17: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/17.jpg)
Árvores Binárias - Pós-ordemvoid exibirArvorePosOrdem(PontNo raiz){
if (raiz == NULL) return;
exibirArvorePosOrdem(raiz->esq);
exibirArvorePosOrdem(raiz->dir);
printf("%i ",raiz->chave);
}
Resultado da execução: 2 12 8 20 23 15
![Page 18: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/18.jpg)
Árvores Binárias - Pós-ordemvoid exibirArvorePosOrdem(PontNo raiz){
if (raiz == NULL) return;
exibirArvorePosOrdem(raiz->esq);
exibirArvorePosOrdem(raiz->dir);
printf("%i ",raiz->chave);
}
Resultado da execução: 2 12 8 20 23 15
![Page 19: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/19.jpg)
Árvores Binárias - Pré-ordem - iterativovoid preOrdemIterativo(PONT raiz){
if (!raiz) return;
PILHA pi;
PONT p;
inicializarPilha(&pi);
push(raiz, &pi);
while (!isEmpty(&pi)) {
p = pop(&pi);
printf("%i ",p->chave);
if (p->dir) push(p->dir, &pi);
if (p->esq) push(p->esq, &pi);
}
printf("\n");
}
![Page 20: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/20.jpg)
Árvores Binárias - Pré-ordem - iterativo
void preOrdemIterativo(PONT raiz){
if (!raiz) return;
PILHA pi;
PONT p;
inicializarPilha(&pi);
push(raiz, &pi);
while (!isEmpty(&pi)) {
p = pop(&pi);
printf("%i ",p->chave);
if (p->dir) push(p->dir, &pi);
if (p->esq) push(p->esq, &pi);
}
printf("\n");
}
Elementos na Pilha - topo:Valores impressos: 15 8 2 12 23 20
![Page 21: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/21.jpg)
Árvores Binárias - Pré-ordem - iterativo
void preOrdemIterativo(PONT raiz){
if (!raiz) return;
PILHA pi;
PONT p;
inicializarPilha(&pi);
push(raiz, &pi);
while (!isEmpty(&pi)) {
p = pop(&pi);
printf("%i ",p->chave);
if (p->dir) push(p->dir, &pi);
if (p->esq) push(p->esq, &pi);
}
printf("\n");
}Elementos na Pilha - topo:Valores impressos:
15 8 2 12 23 20
![Page 22: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/22.jpg)
Árvores Binárias - Pré-ordem - iterativo
void preOrdemIterativo(PONT raiz){
if (!raiz) return;
PILHA pi;
PONT p;
inicializarPilha(&pi);
push(raiz, &pi);
while (!isEmpty(&pi)) {
p = pop(&pi);
printf("%i ",p->chave);
if (p->dir) push(p->dir, &pi);
if (p->esq) push(p->esq, &pi);
}
printf("\n");
}Elementos na Pilha - topo: 15Valores impressos:
15 8 2 12 23 20
![Page 23: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/23.jpg)
Árvores Binárias - Pré-ordem - iterativo
void preOrdemIterativo(PONT raiz){
if (!raiz) return;
PILHA pi;
PONT p;
inicializarPilha(&pi);
push(raiz, &pi);
while (!isEmpty(&pi)) {
p = pop(&pi);
printf("%i ",p->chave);
if (p->dir) push(p->dir, &pi);
if (p->esq) push(p->esq, &pi);
}
printf("\n");
}Elementos na Pilha - topo: 8 23Valores impressos: 15
8 2 12 23 20
![Page 24: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/24.jpg)
Árvores Binárias - Pré-ordem - iterativo
void preOrdemIterativo(PONT raiz){
if (!raiz) return;
PILHA pi;
PONT p;
inicializarPilha(&pi);
push(raiz, &pi);
while (!isEmpty(&pi)) {
p = pop(&pi);
printf("%i ",p->chave);
if (p->dir) push(p->dir, &pi);
if (p->esq) push(p->esq, &pi);
}
printf("\n");
}Elementos na Pilha - topo: 2 12 23Valores impressos: 15 8
2 12 23 20
![Page 25: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/25.jpg)
Árvores Binárias - Pré-ordem - iterativo
void preOrdemIterativo(PONT raiz){
if (!raiz) return;
PILHA pi;
PONT p;
inicializarPilha(&pi);
push(raiz, &pi);
while (!isEmpty(&pi)) {
p = pop(&pi);
printf("%i ",p->chave);
if (p->dir) push(p->dir, &pi);
if (p->esq) push(p->esq, &pi);
}
printf("\n");
}Elementos na Pilha - topo: 12 23Valores impressos: 15 8 2
12 23 20
![Page 26: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/26.jpg)
Árvores Binárias - Pré-ordem - iterativo
void preOrdemIterativo(PONT raiz){
if (!raiz) return;
PILHA pi;
PONT p;
inicializarPilha(&pi);
push(raiz, &pi);
while (!isEmpty(&pi)) {
p = pop(&pi);
printf("%i ",p->chave);
if (p->dir) push(p->dir, &pi);
if (p->esq) push(p->esq, &pi);
}
printf("\n");
}Elementos na Pilha - topo: 23Valores impressos: 15 8 2 12
23 20
![Page 27: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/27.jpg)
Árvores Binárias - Pré-ordem - iterativo
void preOrdemIterativo(PONT raiz){
if (!raiz) return;
PILHA pi;
PONT p;
inicializarPilha(&pi);
push(raiz, &pi);
while (!isEmpty(&pi)) {
p = pop(&pi);
printf("%i ",p->chave);
if (p->dir) push(p->dir, &pi);
if (p->esq) push(p->esq, &pi);
}
printf("\n");
}Elementos na Pilha - topo: 20Valores impressos: 15 8 2 12 23
20
![Page 28: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/28.jpg)
Árvores Binárias - Pré-ordem - iterativo
void preOrdemIterativo(PONT raiz){
if (!raiz) return;
PILHA pi;
PONT p;
inicializarPilha(&pi);
push(raiz, &pi);
while (!isEmpty(&pi)) {
p = pop(&pi);
printf("%i ",p->chave);
if (p->dir) push(p->dir, &pi);
if (p->esq) push(p->esq, &pi);
}
printf("\n");
}Elementos na Pilha - topo:Valores impressos: 15 8 2 12 23 20
![Page 29: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/29.jpg)
Árvores Binárias - Em nível
void exibirArvoreEmNivel(PONT p) {
FILA f;
inicializarFila(&f);
if (p){
entrarFila(p,&f);
while((f.inicio)){
p = sairFila(&f);
printf("%i ", p->chave);
if(p->esq) entrarFila(p->esq, &f);
if(p->dir) entrarFila(p->dir, &f);
}
}
}
![Page 30: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/30.jpg)
Árvores Binárias - Em nível
void exibirArvoreEmNivel(PONT p) {
FILA f;
inicializarFila(&f);
if (p){
entrarFila(p,&f);
while((f.inicio)){
p = sairFila(&f);
printf("%i ", p->chave);
if(p->esq) entrarFila(p->esq, &f);
if(p->dir) entrarFila(p->dir, &f);
}
}
}
Elementos na Fila - inicio:Valores impressos: 15 8 23 2 12 20
![Page 31: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/31.jpg)
Árvores Binárias - Em nível
void exibirArvoreEmNivel(PONT p) {
FILA f;
inicializarFila(&f);
if (p){
entrarFila(p,&f);
while((f.inicio)){
p = sairFila(&f);
printf("%i ", p->chave);
if(p->esq) entrarFila(p->esq, &f);
if(p->dir) entrarFila(p->dir, &f);
}
}
}Elementos na Fila - inicio:Valores impressos:
15 8 23 2 12 20
![Page 32: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/32.jpg)
Árvores Binárias - Em nível
void exibirArvoreEmNivel(PONT p) {
FILA f;
inicializarFila(&f);
if (p){
entrarFila(p,&f);
while((f.inicio)){
p = sairFila(&f);
printf("%i ", p->chave);
if(p->esq) entrarFila(p->esq, &f);
if(p->dir) entrarFila(p->dir, &f);
}
}
}Elementos na Fila - inicio: 15Valores impressos:
15 8 23 2 12 20
![Page 33: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/33.jpg)
Árvores Binárias - Em nível
void exibirArvoreEmNivel(PONT p) {
FILA f;
inicializarFila(&f);
if (p){
entrarFila(p,&f);
while((f.inicio)){
p = sairFila(&f);
printf("%i ", p->chave);
if(p->esq) entrarFila(p->esq, &f);
if(p->dir) entrarFila(p->dir, &f);
}
}
}Elementos na Fila - inicio: 8 23Valores impressos: 15
8 23 2 12 20
![Page 34: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/34.jpg)
Árvores Binárias - Em nível
void exibirArvoreEmNivel(PONT p) {
FILA f;
inicializarFila(&f);
if (p){
entrarFila(p,&f);
while((f.inicio)){
p = sairFila(&f);
printf("%i ", p->chave);
if(p->esq) entrarFila(p->esq, &f);
if(p->dir) entrarFila(p->dir, &f);
}
}
}Elementos na Fila - inicio: 23 2 12Valores impressos: 15 8
23 2 12 20
![Page 35: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/35.jpg)
Árvores Binárias - Em nível
void exibirArvoreEmNivel(PONT p) {
FILA f;
inicializarFila(&f);
if (p){
entrarFila(p,&f);
while((f.inicio)){
p = sairFila(&f);
printf("%i ", p->chave);
if(p->esq) entrarFila(p->esq, &f);
if(p->dir) entrarFila(p->dir, &f);
}
}
}Elementos na Fila - inicio: 2 12 20Valores impressos: 15 8 23
2 12 20
![Page 36: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/36.jpg)
Árvores Binárias - Em nível
void exibirArvoreEmNivel(PONT p) {
FILA f;
inicializarFila(&f);
if (p){
entrarFila(p,&f);
while((f.inicio)){
p = sairFila(&f);
printf("%i ", p->chave);
if(p->esq) entrarFila(p->esq, &f);
if(p->dir) entrarFila(p->dir, &f);
}
}
}Elementos na Fila - inicio: 12 20Valores impressos: 15 8 23 2
12 20
![Page 37: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/37.jpg)
Árvores Binárias - Em nível
void exibirArvoreEmNivel(PONT p) {
FILA f;
inicializarFila(&f);
if (p){
entrarFila(p,&f);
while((f.inicio)){
p = sairFila(&f);
printf("%i ", p->chave);
if(p->esq) entrarFila(p->esq, &f);
if(p->dir) entrarFila(p->dir, &f);
}
}
}Elementos na Fila - inicio: 20Valores impressos: 15 8 23 2 12
20
![Page 38: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/38.jpg)
Árvores Binárias - Em nível
void exibirArvoreEmNivel(PONT p) {
FILA f;
inicializarFila(&f);
if (p){
entrarFila(p,&f);
while((f.inicio)){
p = sairFila(&f);
printf("%i ", p->chave);
if(p->esq) entrarFila(p->esq, &f);
if(p->dir) entrarFila(p->dir, &f);
}
}
}Elementos na Fila - inicio:Valores impressos: 15 8 23 2 12 20
![Page 39: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/39.jpg)
Árvores Binárias - Busca
A busca em uma árvore “apenas” binária (sem nenhumaordenação no valor de seus nós) precisará, no pior caso,percorrer todos os nós. A princípio, usando qualquer um dospercursos que vimos.Implementaremos, sem perda de generalidade, uma buscaque utilize a pré-ordem: investigue primeiro o nó atual, se nãoencontrar o nó buscado, procure, recursivamente, à esquerda ese novamente não encontrar, procure, recursivamente à direita.
![Page 40: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/40.jpg)
Árvores Binárias - Busca
PONT buscarChave(TIPOCHAVE ch, PONT raiz){
if (raiz == NULL) return NULL;
if (raiz->chave == ch) return raiz;
PONT aux = buscarChave(ch,raiz->esq);
if (aux) return aux;
return buscarChave(ch,raiz->dir);
}
![Page 41: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/41.jpg)
Árvores Binárias - Inserção
A inserção em uma árvore binária (que não tenha umaordenação de chaves a ser cumprida) é tipicamente feita deacordo com a indicação do usuário. Isto é, usuário diz qual nóserá o pai de um novo nó e a criação da raiz é, tipicamente,feita a parte.Não há uma definição padrão do que como será feita ainserção se o nó pai já tiver um filho no local onde o usuáriosolicitou a inserção (pode-se não inserir, inserir e excluir o nóantigo, transformar o nó antigo em filho do novo nó, etc [é algoque precisa ser definido na especificação do problema]).
![Page 42: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/42.jpg)
Árvores Binárias - Inserção
PONT criarNovoNo(TIPOCHAVE ch){
PONT novoNo = (PONT)malloc(sizeof(NO));
novoNo->esq = NULL;
novoNo->dir = NULL;
novoNo->chave = ch;
return novoNo;
}
void criarRaiz(PONT * raiz, TIPOCHAVE novaChave){
*raiz = criarNovoNo(novaChave);
}
![Page 43: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/43.jpg)
Árvores Binárias - Inserçãotypedef enum{esquerdo, direito} LADO;
bool inserirFilho(PONT raiz, TIPOCHAVE novaChave,
TIPOCHAVE chavePai, LADO lado){
PONT pai = buscarChave(chavePai,raiz);
if (!pai) return false;
PONT novo = criarNovoNo(novaChave);
if (lado == esquerdo){
novo->esq = pai->esq;
pai->esq = novo;
}else{
novo->esq = pai->dir;
pai->dir = novo;
}
return true;
}
![Page 44: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/44.jpg)
Árvores de Busca Binária (ABB)
Ou Árvores Binárias de Busca (ABB) ou Árvores Binária dePesquisa (ABP).Uma árvore binária de pesquisa é uma árvore binária em que,a cada nó, todos os registros com chaves menores (oumenores e iguais) que a deste nó estão na subárvore daesquerda, enquanto que os registros com chaves maioresestão na subárvore da direita.
![Page 45: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/45.jpg)
Árvores de Busca Binária - Busca
PONT buscaBinaria(TIPOCHAVE2 ch, PONT raiz){
if (raiz == NULL) return NULL;
if (raiz->chave == ch) return raiz;
if (raiz->chave<ch)
return buscaBinaria(ch,raiz->dir);
return buscaBinaria(ch,raiz->esq);
}
![Page 46: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/46.jpg)
Busca x Busca Binária
Busca
PONT buscarChave(TIPOCHAVE ch,
PONT raiz){
if (raiz == NULL) return NULL;
if (raiz->chave == ch) return raiz;
PONT aux = buscarChave(ch,raiz->esq);
if (aux) return aux;
return buscarChave(ch,raiz->dir);
}
Busca Binária
PONT buscaBinaria(TIPOCHAVE ch,
PONT raiz){
if (raiz == NULL) return NULL;
if (raiz->chave == ch) return raiz;
if (raiz->chave<ch)
return buscaBinaria(ch,raiz->dir);
return buscaBinaria(ch,raiz->esq);
}
![Page 47: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/47.jpg)
Árvores de Busca Binária - Busca
Implementação Iterativa
PONT buscaBinariaIterativa(PONT raiz, TIPOCHAVE ch){
PONT atual = raiz;
while (atual) {
if(atual->chave == ch) return atual;
if(ch < atual->chave) atual = atual->esq;
else atual = atual->dir;
}
return NULL;
}
![Page 48: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/48.jpg)
Árvores de Busca Binária - Inserção
A inserção em uma árvore de busca binária se dá pelo valor dachave do registro que será inserido.A implementação pode ou não permitir a inserção de chavesrepetidas.A regra de organização é a seguinte: chaves menores (ouiguais) devem ser inseridas à esquerda do nó atual; chavesmaiores devem ser inseridas à direita.Vamos inserir um nó apenas quando encontrarmos “umespaço livre” para ele, seguindo a regra de organizaçãoapresentada.
![Page 49: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/49.jpg)
Árvores de Busca Binária - Inserção
Inserção do elemento com chave igual a 3.
![Page 50: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/50.jpg)
Árvores de Busca Binária - Inserção
Inserção do elemento com chave igual a 3.
![Page 51: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/51.jpg)
Árvores de Busca Binária - Inserção
Inserção do elemento com chave igual a 3.
![Page 52: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/52.jpg)
Árvores de Busca Binária - Inserção
Inserção do elemento com chave igual a 21.
![Page 53: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/53.jpg)
Árvores de Busca Binária - Inserção
Inserção do elemento com chave igual a 21.
![Page 54: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/54.jpg)
Árvores de Busca Binária - Inserção
bool inserirNo2(PONT* raiz, TIPOCHAVE novaChave){
if (*raiz == NULL){
*raiz = criarNovoNo(novaChave);
return true;
}
else return inserirAux(*raiz, novaChave);
}
![Page 55: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/55.jpg)
Árvores de Busca Binária - Inserçãobool inserirAux(PONT raiz,
TIPOCHAVE ch){
if (raiz->chave >= ch) {
if (raiz->esq == NULL) {
raiz->esq = criarNovoNo(ch);
return true;
}else
return inserirAux(raiz->esq, ch);
}else{
if (raiz->dir == NULL) {
raiz->dir = criarNovoNo(ch);
return true;
}else
return inserirAux(raiz->dir, ch);
}
}
![Page 56: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/56.jpg)
Inserção x Inserção em Árvore de BuscaÁrvore Binária
bool inserirFilho(PONT raiz,
TIPOCHAVE ch,
TIPOCHAVE chPai, LADO lado){
PONT pai = buscarChave(chPai,raiz);
if (!pai) return false;
PONT novo = criarNovoNo(ch);
if (lado == esquerdo){
novo->esq = pai->esq;
pai->esq = novo;
}else{
novo->esq = pai->dir;
pai->dir = novo;
}
return true;
}
Árvore de Busca Binária
bool inserirAux(PONT raiz,
TIPOCHAVE ch){
if (raiz->chave >= ch) {
if (raiz->esq == NULL) {
raiz->esq = criarNovoNo(ch);
return true;
}else
return inserirAux(raiz->esq, ch);
}else{
if (raiz->dir == NULL) {
raiz->dir = criarNovoNo(ch);
return true;
}else
return inserirAux(raiz->dir, ch);
}
}
![Page 57: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/57.jpg)
ABB - Inserção Iterativabool inserirNoIterativo(PONT* raiz, TIPOCHAVE ch){
if (*raiz == NULL){
*raiz = criarNovoNo(ch);
return true;
} else {
PONT atual = *raiz;
while (atual){
if (atual->chave >= ch) {
if (atual->esq == NULL) {
atual->esq = criarNovoNo(ch);
return true;
}else atual = atual->esq;
}else{
if (atual->dir == NULL) {
atual->dir = criarNovoNo(ch);
return true;
}else atual = atual->dir;
}
}
}
return false;
}
![Page 58: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/58.jpg)
Árvores de Busca Binária - Inserção
Algoritmo Recursivo Único (insere raiz ou qualquer outro nó)
bool inserirNo(PONT* raiz, TIPOCHAVE novaChave){
if (*raiz == NULL){
*raiz = criarNovoNo(novaChave);
return true;
}
else if ((*raiz)->chave >= novaChave){
return inserirNo(&(*raiz)->esq, novaChave);
}else return inserirNo(&(*raiz)->dir, novaChave);
}
![Page 59: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/59.jpg)
Árvoresbool inserirNo(PONT* raiz,
TIPOCHAVE novaChave){
if (*raiz == NULL){
*raiz = criarNovoNo(novaChave);
return true;
}
else if ((*raiz)->chave >= novaChave){
return inserirNo(&(*raiz)->esq, novaChave);
}else return inserirNo(&(*raiz)->dir, novaChave);
}
![Page 60: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/60.jpg)
Árvoresbool inserirNo(PONT* raiz,
TIPOCHAVE novaChave){
if (*raiz == NULL){
*raiz = criarNovoNo(novaChave);
return true;
}
else if ((*raiz)->chave >= novaChave){
return inserirNo(&(*raiz)->esq, novaChave);
}else return inserirNo(&(*raiz)->dir, novaChave);
}
![Page 61: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/61.jpg)
Árvores de Busca Binária - Exclusão
O usuário informa a chave do nó que deverá ser excluído.Se o nó existir, há três possibilidades:
1. Nó que está sendo excluído não tem filhos: o nó seráexcluído e quem apontava para ele (pai ou endereço queapontava para a raiz) deve apontar para NULL.2. Nó que está sendo excluído tem um único filho: o nó seráexcluído e quem apontava para ele (pai ou endereço queapontava para a raiz) deve apontar para o filho do nó a serexcluído.3. Nó que está sendo excluído tem dois filhos: para nãodesorganizar a árvore será necessário encontrar um“substituto” para ele, antes de realizar a exclusão.
![Page 62: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/62.jpg)
Árvores de Busca Binária - Exclusão
3. Nó que está sendo excluído tem dois filhos: para nãodesorganizar a árvore será necessário encontrar um“substituto” para ele, antes de realizar a exclusão.Na árvore há outros dois nós que poderiam estar no local donó que será excluído. O maior entre os elementos menores doque ele (ou menores iguais a ele) ou o menor entre oselementos maiores do que ele.Utilizaremos o maior entre os menores (ou iguais) a ele.
![Page 63: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/63.jpg)
Árvores de Busca Binária - Exclusão
Exclusão do elemento com chave igual a 15.
Exclusão doelemento com chave igual a 15: encontrar o maior à esquerda.
![Page 64: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/64.jpg)
Árvores de Busca Binária - Exclusão
Exclusão do elemento com chave igual a 15: encontrar o maiorà esquerda.
![Page 65: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/65.jpg)
Árvores de Busca Binária - Exclusão
Exclusão do elemento com chave igual a 15: encontrar o maiorà esquerda.
![Page 66: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/66.jpg)
Árvores de Busca Binária - Exclusão
Exclusão do elemento com chave igual a 15: realizar asubstituição.
![Page 67: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/67.jpg)
Árvores de Busca Binária - Exclusão
PONT maior_esquerdo(PONT p, PONT* ant){
*ant = p;
p = p->esq;
while (p->dir) {
*ant = p;
p = p->dir;
}
return(p);
}
![Page 68: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/68.jpg)
Árvores de Busca Binária - Exclusãobool excluirNo(PONT *raiz, TIPOCHAVE ch){
PONT atual, no_pai, substituto, pai_substituto;
atual = buscaNo(*raiz, ch, &no_pai);
if(atual == NULL) return false;
if(!atual->esq || !atual->dir) { // tem zero ou um filho
if(atual->esq) substituto = atual->esq;
else substituto = atual->dir;
if(!no_pai) { // no excluido eh raiz
*raiz = substituto;
}else {
if(no_pai->esq == atual) no_pai->esq = substituto;
else no_pai->dir = substituto;
}
free(atual);
} else { // tem dois filhos
substituto = maior_esquerdo(atual, &pai_substituto);
atual->chave = substituto->chave;
if (pai_substituto->esq == substituto)
pai_substituto->esq = substituto->esq;
else pai_substituto->dir = substituto->esq;
free(substituto);
}
return true;
}
![Page 69: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/69.jpg)
Árvores Binárias - Complexidade
Árvore Binária Árvore de Busca BináriaBusca O(n) O(h); h ∈ O(n)Inserção O(n) O(h); h ∈ O(n)Exclusão O(n) O(h); h ∈ O(n)
![Page 70: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/70.jpg)
Árvores de Busca Binária -Desbalanceamento
Duas árvores com os mesmos nós, inseridos em ordensdiferentes.
![Page 71: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/71.jpg)
Árvores de Busca Binária -DesbalanceamentoDuas árvores com os mesmos nós, inseridos em ordensdiferentes.
![Page 72: SIN5013 Análise de Algoritmos e Estruturas de Dados - Árvores · Árvores Estrutura de dados composta de um nó chamadoraiz, abaixo do qual estão assubárvoresque compõem essa](https://reader035.vdocuments.site/reader035/viewer/2022062604/5fb55749f55418331a38cd75/html5/thumbnails/72.jpg)
SIN5013Análise de Algoritmos e Estruturas de
Dados
Árvores
Prof. Luciano Antonio Digiampietri