33
AULA e07a Algoritmos e Estruturas de Dados I Árvores Binárias - Percursos (parte I) Luciano Antonio Digiampietri

AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

AULA e07aAlgoritmos e Estruturas de Dados I

Árvores Binárias - Percursos (parte I)

Luciano Antonio Digiampietri

Page 2: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Árvores Binárias - Percursos

Há diversas formas de percorrer uma árvore.

- Utilizamos abordagens recursivas para exibir oselementos de uma árvore, contar o número de nósou calcular sua altura.- Hoje discutiremos diferentes abordagens.

Page 3: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Árvores Binárias - Percursos

Há diversas formas de percorrer uma árvore.- Utilizamos abordagens recursivas para exibir oselementos de uma árvore, contar o número de nósou calcular sua altura.

- Hoje discutiremos diferentes abordagens.

Page 4: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Árvores Binárias - Percursos

Há diversas formas de percorrer uma árvore.- Utilizamos abordagens recursivas para exibir oselementos de uma árvore, contar o número de nósou calcular sua altura.- Hoje discutiremos diferentes abordagens.

Page 5: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Árvores Binárias - PercursosOs percursos mais comuns em árvores bináriaspartem da raiz e, recursivamente, percorrem asubárvore à esquerda e em seguida a subárvore àdireita.

Estes percursos podem ser implementados demaneira iterativa (utilizando uma estrutura de dadosauxiliar);É possível também percorre a árvore em nível.

Page 6: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Árvores Binárias - PercursosOs percursos mais comuns em árvores bináriaspartem da raiz e, recursivamente, percorrem asubárvore à esquerda e em seguida a subárvore àdireita.Estes percursos podem ser implementados demaneira iterativa (utilizando uma estrutura de dadosauxiliar);

É possível também percorre a árvore em nível.

Page 7: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Árvores Binárias - PercursosOs percursos mais comuns em árvores bináriaspartem da raiz e, recursivamente, percorrem asubárvore à esquerda e em seguida a subárvore àdireita.Estes percursos podem ser implementados demaneira iterativa (utilizando uma estrutura de dadosauxiliar);É possível também percorre a árvore em nível.

Page 8: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Árvores Binárias

Discutiremos as seguintes funções:Exibição dos elementos em pré-ordem, em ordeme em pós-ordem (implementações recursivas);Exibição dos em pré-ordem (implementaçãoiterativa);Exibição dos elementos em nível (implementaçãoiterativa);

Page 9: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Modelagem#include <stdio.h>#include <malloc.h>#define true 1#define false 0

typedef int bool;typedef int TIPOCHAVE;

typedef struct aux{TIPOCHAVE chave;struct aux *esq, *dir;

} NO;

typedef NO* PONT;

Page 10: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Modelagem#include <stdio.h>#include <malloc.h>#define true 1#define false 0

typedef int bool;typedef int TIPOCHAVE;

typedef struct aux{TIPOCHAVE chave;struct aux *esq, *dir;

} NO;

typedef NO* PONT;

Page 11: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Percursos Pré/Em/Pós-ordemvoid exibirArvorePreOrdem(PONT raiz){

if (raiz == NULL) return;

printf("%i ",raiz->chave);

exibirArvorePreOrdem(raiz->esq);exibirArvorePreOrdem(raiz->dir);

}

void exibirArvoreEmOrdem(PONT raiz){if (raiz == NULL) return;exibirArvoreEmOrdem(raiz->esq);

printf("%i ",raiz->chave);

exibirArvoreEmOrdem(raiz->dir);}

void exibirArvorePosOrdem(PONT raiz){if (raiz == NULL) return;exibirArvorePosOrdem(raiz->esq);exibirArvorePosOrdem(raiz->dir);

printf("%i ",raiz->chave);

}

Page 12: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Percursos Pré/Em/Pós-ordemvoid exibirArvorePreOrdem(PONT raiz){

if (raiz == NULL) return;printf("%i ",raiz->chave);exibirArvorePreOrdem(raiz->esq);exibirArvorePreOrdem(raiz->dir);

}

void exibirArvoreEmOrdem(PONT raiz){if (raiz == NULL) return;exibirArvoreEmOrdem(raiz->esq);printf("%i ",raiz->chave);exibirArvoreEmOrdem(raiz->dir);

}

void exibirArvorePosOrdem(PONT raiz){if (raiz == NULL) return;exibirArvorePosOrdem(raiz->esq);exibirArvorePosOrdem(raiz->dir);printf("%i ",raiz->chave);

}

Page 13: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Percursos Pré/Em/Pós-ordemvoid exibirArvorePreOrdem(PONT raiz){if (raiz == NULL) return;printf("%i ",raiz->chave);exibirArvorePreOrdem(raiz->esq);exibirArvorePreOrdem(raiz->dir);

}

$ 40 30 60 50

void exibirArvoreEmOrdem(PONT raiz){if (raiz == NULL) return;exibirArvoreEmOrdem(raiz->esq);printf("%i ",raiz->chave);exibirArvoreEmOrdem(raiz->dir);

}

$ 30 40 50 60

void exibirArvorePosOrdem(PONT raiz){if (raiz == NULL) return;exibirArvorePosOrdem(raiz->esq);exibirArvorePosOrdem(raiz->dir);printf("%i ",raiz->chave);

}

$ 30 50 60 40

Page 14: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Percursos Pré/Em/Pós-ordemvoid exibirArvorePreOrdem(PONT raiz){if (raiz == NULL) return;printf("%i ",raiz->chave);exibirArvorePreOrdem(raiz->esq);exibirArvorePreOrdem(raiz->dir);

}

$ 40 30 60 50

void exibirArvoreEmOrdem(PONT raiz){if (raiz == NULL) return;exibirArvoreEmOrdem(raiz->esq);printf("%i ",raiz->chave);exibirArvoreEmOrdem(raiz->dir);

}

$ 30 40 50 60

void exibirArvorePosOrdem(PONT raiz){if (raiz == NULL) return;exibirArvorePosOrdem(raiz->esq);exibirArvorePosOrdem(raiz->dir);printf("%i ",raiz->chave);

}

$ 30 50 60 40

Page 15: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Percursos Pré/Em/Pós-ordemvoid exibirArvorePreOrdem(PONT raiz){if (raiz == NULL) return;printf("%i ",raiz->chave);exibirArvorePreOrdem(raiz->esq);exibirArvorePreOrdem(raiz->dir);

} $ 40

30 60 50

void exibirArvoreEmOrdem(PONT raiz){if (raiz == NULL) return;exibirArvoreEmOrdem(raiz->esq);printf("%i ",raiz->chave);exibirArvoreEmOrdem(raiz->dir);

}

$ 30 40 50 60

void exibirArvorePosOrdem(PONT raiz){if (raiz == NULL) return;exibirArvorePosOrdem(raiz->esq);exibirArvorePosOrdem(raiz->dir);printf("%i ",raiz->chave);

}

$ 30 50 60 40

Page 16: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Percursos Pré/Em/Pós-ordemvoid exibirArvorePreOrdem(PONT raiz){if (raiz == NULL) return;printf("%i ",raiz->chave);exibirArvorePreOrdem(raiz->esq);exibirArvorePreOrdem(raiz->dir);

} $ 40 30

60 50

void exibirArvoreEmOrdem(PONT raiz){if (raiz == NULL) return;exibirArvoreEmOrdem(raiz->esq);printf("%i ",raiz->chave);exibirArvoreEmOrdem(raiz->dir);

}

$ 30 40 50 60

void exibirArvorePosOrdem(PONT raiz){if (raiz == NULL) return;exibirArvorePosOrdem(raiz->esq);exibirArvorePosOrdem(raiz->dir);printf("%i ",raiz->chave);

}

$ 30 50 60 40

Page 17: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Percursos Pré/Em/Pós-ordemvoid exibirArvorePreOrdem(PONT raiz){if (raiz == NULL) return;printf("%i ",raiz->chave);exibirArvorePreOrdem(raiz->esq);exibirArvorePreOrdem(raiz->dir);

} $ 40 30

60 50

void exibirArvoreEmOrdem(PONT raiz){if (raiz == NULL) return;exibirArvoreEmOrdem(raiz->esq);printf("%i ",raiz->chave);exibirArvoreEmOrdem(raiz->dir);

}

$ 30 40 50 60

void exibirArvorePosOrdem(PONT raiz){if (raiz == NULL) return;exibirArvorePosOrdem(raiz->esq);exibirArvorePosOrdem(raiz->dir);printf("%i ",raiz->chave);

}

$ 30 50 60 40

Page 18: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Percursos Pré/Em/Pós-ordemvoid exibirArvorePreOrdem(PONT raiz){if (raiz == NULL) return;printf("%i ",raiz->chave);exibirArvorePreOrdem(raiz->esq);exibirArvorePreOrdem(raiz->dir);

} $ 40 30

60 50

void exibirArvoreEmOrdem(PONT raiz){if (raiz == NULL) return;exibirArvoreEmOrdem(raiz->esq);printf("%i ",raiz->chave);exibirArvoreEmOrdem(raiz->dir);

} $ 30

40 50 60

void exibirArvorePosOrdem(PONT raiz){if (raiz == NULL) return;exibirArvorePosOrdem(raiz->esq);exibirArvorePosOrdem(raiz->dir);printf("%i ",raiz->chave);

}

$ 30 50 60 40

Page 19: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Percursos Pré/Em/Pós-ordemvoid exibirArvorePreOrdem(PONT raiz){if (raiz == NULL) return;printf("%i ",raiz->chave);exibirArvorePreOrdem(raiz->esq);exibirArvorePreOrdem(raiz->dir);

} $ 40 30

60 50

void exibirArvoreEmOrdem(PONT raiz){if (raiz == NULL) return;exibirArvoreEmOrdem(raiz->esq);printf("%i ",raiz->chave);exibirArvoreEmOrdem(raiz->dir);

} $ 30

40 50 60

void exibirArvorePosOrdem(PONT raiz){if (raiz == NULL) return;exibirArvorePosOrdem(raiz->esq);exibirArvorePosOrdem(raiz->dir);printf("%i ",raiz->chave);

}

$ 30 50 60 40

Page 20: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Percursos Pré/Em/Pós-ordemvoid exibirArvorePreOrdem(PONT raiz){if (raiz == NULL) return;printf("%i ",raiz->chave);exibirArvorePreOrdem(raiz->esq);exibirArvorePreOrdem(raiz->dir);

} $ 40 30

60 50

void exibirArvoreEmOrdem(PONT raiz){if (raiz == NULL) return;exibirArvoreEmOrdem(raiz->esq);printf("%i ",raiz->chave);exibirArvoreEmOrdem(raiz->dir);

} $ 30

40 50 60

void exibirArvorePosOrdem(PONT raiz){if (raiz == NULL) return;exibirArvorePosOrdem(raiz->esq);exibirArvorePosOrdem(raiz->dir);printf("%i ",raiz->chave);

} $ 30

50 60 40

Page 21: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Percursos Pré/Em/Pós-ordemvoid exibirArvorePreOrdem(PONT raiz){if (raiz == NULL) return;printf("%i ",raiz->chave);exibirArvorePreOrdem(raiz->esq);exibirArvorePreOrdem(raiz->dir);

} $ 40 30

60 50

void exibirArvoreEmOrdem(PONT raiz){if (raiz == NULL) return;exibirArvoreEmOrdem(raiz->esq);printf("%i ",raiz->chave);exibirArvoreEmOrdem(raiz->dir);

} $ 30 40

50 60

void exibirArvorePosOrdem(PONT raiz){if (raiz == NULL) return;exibirArvorePosOrdem(raiz->esq);exibirArvorePosOrdem(raiz->dir);printf("%i ",raiz->chave);

} $ 30

50 60 40

Page 22: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Percursos Pré/Em/Pós-ordemvoid exibirArvorePreOrdem(PONT raiz){if (raiz == NULL) return;printf("%i ",raiz->chave);exibirArvorePreOrdem(raiz->esq);exibirArvorePreOrdem(raiz->dir);

} $ 40 30 60

50

void exibirArvoreEmOrdem(PONT raiz){if (raiz == NULL) return;exibirArvoreEmOrdem(raiz->esq);printf("%i ",raiz->chave);exibirArvoreEmOrdem(raiz->dir);

} $ 30 40

50 60

void exibirArvorePosOrdem(PONT raiz){if (raiz == NULL) return;exibirArvorePosOrdem(raiz->esq);exibirArvorePosOrdem(raiz->dir);printf("%i ",raiz->chave);

} $ 30

50 60 40

Page 23: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Percursos Pré/Em/Pós-ordemvoid exibirArvorePreOrdem(PONT raiz){if (raiz == NULL) return;printf("%i ",raiz->chave);exibirArvorePreOrdem(raiz->esq);exibirArvorePreOrdem(raiz->dir);

} $ 40 30 60 50

void exibirArvoreEmOrdem(PONT raiz){if (raiz == NULL) return;exibirArvoreEmOrdem(raiz->esq);printf("%i ",raiz->chave);exibirArvoreEmOrdem(raiz->dir);

} $ 30 40

50 60

void exibirArvorePosOrdem(PONT raiz){if (raiz == NULL) return;exibirArvorePosOrdem(raiz->esq);exibirArvorePosOrdem(raiz->dir);printf("%i ",raiz->chave);

} $ 30

50 60 40

Page 24: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Percursos Pré/Em/Pós-ordemvoid exibirArvorePreOrdem(PONT raiz){if (raiz == NULL) return;printf("%i ",raiz->chave);exibirArvorePreOrdem(raiz->esq);exibirArvorePreOrdem(raiz->dir);

} $ 40 30 60 50

void exibirArvoreEmOrdem(PONT raiz){if (raiz == NULL) return;exibirArvoreEmOrdem(raiz->esq);printf("%i ",raiz->chave);exibirArvoreEmOrdem(raiz->dir);

} $ 30 40

50 60

void exibirArvorePosOrdem(PONT raiz){if (raiz == NULL) return;exibirArvorePosOrdem(raiz->esq);exibirArvorePosOrdem(raiz->dir);printf("%i ",raiz->chave);

} $ 30

50 60 40

Page 25: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Percursos Pré/Em/Pós-ordemvoid exibirArvorePreOrdem(PONT raiz){if (raiz == NULL) return;printf("%i ",raiz->chave);exibirArvorePreOrdem(raiz->esq);exibirArvorePreOrdem(raiz->dir);

} $ 40 30 60 50

void exibirArvoreEmOrdem(PONT raiz){if (raiz == NULL) return;exibirArvoreEmOrdem(raiz->esq);printf("%i ",raiz->chave);exibirArvoreEmOrdem(raiz->dir);

} $ 30 40 50

60

void exibirArvorePosOrdem(PONT raiz){if (raiz == NULL) return;exibirArvorePosOrdem(raiz->esq);exibirArvorePosOrdem(raiz->dir);printf("%i ",raiz->chave);

} $ 30

50 60 40

Page 26: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Percursos Pré/Em/Pós-ordemvoid exibirArvorePreOrdem(PONT raiz){if (raiz == NULL) return;printf("%i ",raiz->chave);exibirArvorePreOrdem(raiz->esq);exibirArvorePreOrdem(raiz->dir);

} $ 40 30 60 50

void exibirArvoreEmOrdem(PONT raiz){if (raiz == NULL) return;exibirArvoreEmOrdem(raiz->esq);printf("%i ",raiz->chave);exibirArvoreEmOrdem(raiz->dir);

} $ 30 40 50

60

void exibirArvorePosOrdem(PONT raiz){if (raiz == NULL) return;exibirArvorePosOrdem(raiz->esq);exibirArvorePosOrdem(raiz->dir);printf("%i ",raiz->chave);

} $ 30

50 60 40

Page 27: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Percursos Pré/Em/Pós-ordemvoid exibirArvorePreOrdem(PONT raiz){if (raiz == NULL) return;printf("%i ",raiz->chave);exibirArvorePreOrdem(raiz->esq);exibirArvorePreOrdem(raiz->dir);

} $ 40 30 60 50

void exibirArvoreEmOrdem(PONT raiz){if (raiz == NULL) return;exibirArvoreEmOrdem(raiz->esq);printf("%i ",raiz->chave);exibirArvoreEmOrdem(raiz->dir);

} $ 30 40 50

60

void exibirArvorePosOrdem(PONT raiz){if (raiz == NULL) return;exibirArvorePosOrdem(raiz->esq);exibirArvorePosOrdem(raiz->dir);printf("%i ",raiz->chave);

} $ 30 50

60 40

Page 28: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Percursos Pré/Em/Pós-ordemvoid exibirArvorePreOrdem(PONT raiz){if (raiz == NULL) return;printf("%i ",raiz->chave);exibirArvorePreOrdem(raiz->esq);exibirArvorePreOrdem(raiz->dir);

} $ 40 30 60 50

void exibirArvoreEmOrdem(PONT raiz){if (raiz == NULL) return;exibirArvoreEmOrdem(raiz->esq);printf("%i ",raiz->chave);exibirArvoreEmOrdem(raiz->dir);

} $ 30 40 50 60

void exibirArvorePosOrdem(PONT raiz){if (raiz == NULL) return;exibirArvorePosOrdem(raiz->esq);exibirArvorePosOrdem(raiz->dir);printf("%i ",raiz->chave);

} $ 30 50

60 40

Page 29: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Percursos Pré/Em/Pós-ordemvoid exibirArvorePreOrdem(PONT raiz){if (raiz == NULL) return;printf("%i ",raiz->chave);exibirArvorePreOrdem(raiz->esq);exibirArvorePreOrdem(raiz->dir);

} $ 40 30 60 50

void exibirArvoreEmOrdem(PONT raiz){if (raiz == NULL) return;exibirArvoreEmOrdem(raiz->esq);printf("%i ",raiz->chave);exibirArvoreEmOrdem(raiz->dir);

} $ 30 40 50 60

void exibirArvorePosOrdem(PONT raiz){if (raiz == NULL) return;exibirArvorePosOrdem(raiz->esq);exibirArvorePosOrdem(raiz->dir);printf("%i ",raiz->chave);

} $ 30 50

60 40

Page 30: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Percursos Pré/Em/Pós-ordemvoid exibirArvorePreOrdem(PONT raiz){if (raiz == NULL) return;printf("%i ",raiz->chave);exibirArvorePreOrdem(raiz->esq);exibirArvorePreOrdem(raiz->dir);

} $ 40 30 60 50

void exibirArvoreEmOrdem(PONT raiz){if (raiz == NULL) return;exibirArvoreEmOrdem(raiz->esq);printf("%i ",raiz->chave);exibirArvoreEmOrdem(raiz->dir);

} $ 30 40 50 60

void exibirArvorePosOrdem(PONT raiz){if (raiz == NULL) return;exibirArvorePosOrdem(raiz->esq);exibirArvorePosOrdem(raiz->dir);printf("%i ",raiz->chave);

} $ 30 50 60

40

Page 31: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Percursos Pré/Em/Pós-ordemvoid exibirArvorePreOrdem(PONT raiz){if (raiz == NULL) return;printf("%i ",raiz->chave);exibirArvorePreOrdem(raiz->esq);exibirArvorePreOrdem(raiz->dir);

} $ 40 30 60 50

void exibirArvoreEmOrdem(PONT raiz){if (raiz == NULL) return;exibirArvoreEmOrdem(raiz->esq);printf("%i ",raiz->chave);exibirArvoreEmOrdem(raiz->dir);

} $ 30 40 50 60

void exibirArvorePosOrdem(PONT raiz){if (raiz == NULL) return;exibirArvorePosOrdem(raiz->esq);exibirArvorePosOrdem(raiz->dir);printf("%i ",raiz->chave);

} $ 30 50 60 40

Page 32: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

Percursos Pré/Em/Pós-ordemvoid exibirArvorePreOrdem(PONT raiz){if (raiz == NULL) return;printf("%i ",raiz->chave);exibirArvorePreOrdem(raiz->esq);exibirArvorePreOrdem(raiz->dir);

} $ 40 30 60 50

void exibirArvoreEmOrdem(PONT raiz){if (raiz == NULL) return;exibirArvoreEmOrdem(raiz->esq);printf("%i ",raiz->chave);exibirArvoreEmOrdem(raiz->dir);

} $ 30 40 50 60

void exibirArvorePosOrdem(PONT raiz){if (raiz == NULL) return;exibirArvorePosOrdem(raiz->esq);exibirArvorePosOrdem(raiz->dir);printf("%i ",raiz->chave);

} $ 30 50 60 40

Page 33: AULA e07a Algoritmos e Estruturas de Dados I · 2020. 8. 4. · maneiraiterativa(utilizando uma estrutura de dados auxiliar); É possível também percorre a árvoreem nível. Árvores

AULA e07aAlgoritmos e Estruturas de Dados I

Árvores Binárias - Percursos (parte I)

Luciano Antonio Digiampietri