Existem várias formas de se implementar uma árvore binária. A mais simples delas é usar um vetor de nós. Dessa forma, cada nó possui pelo menos três valores: uma referência para o pai do nó, uma referência para o filho à esquerda do nó e mais uma outra referência para o filho à direita do respectivo nó. O atributo "pai" vai apontar para a posição na qual o pai do nó se encontra, no vetor. O atributo "esquerda" vai armazenar a posição da raiz da sub-árvore à esquerda do nó, e o atributo "direita" guarda a posição da raiz da sub-árvore direita do nó, no vetor. Além disso, é relevante estabelecer um atributo "dado" que irá armazenar o conteúdo do nó.
É possível adicionar algumas regras à inserção de dados em uma árvore para que ela se torne ordenada. Assim, sempre que um novo dado estiver para ser adicionado junto à árvore, ele será comparado com o nó raiz. Se ele é menor do que a raiz, deverá ser adicionado na sub-árvore esquerda, caso contrário na sub-árvore direita.
Considere que, no seu primeiro estágio, ao realizar um teste no seu programa que implementa árvores binárias, você inseriu os números de seu RA (da esquerda para a direita) como se cada algarismo fosse um nó na árvore. Dessa forma, altere o código-fonte dado para que seu programa, durante a execução, monte uma árvore binária a partir dos dígitos de seu RA. O seu programa não deve realizar a inserção automaticamente ordenada, ou seja, não é preciso desenvolver um método que realize a inserção ordenadamente. Você mesmo pode construir a árvore (via inserções simples, porém seguindo as regras de inserção ordenada), de maneira a compor a árvore ordenada com os números de seu RA. Além disso, você precisará criar uma função que seja capaz de realizar o percurso pré-ordem na árvore recém-criada, partindo da raiz e imprimindo na tela os nós visitados de acordo com esse método.
Por exemplo, considere que seu RA é igual a 221979435. Abaixo temos um exemplo de como sua árvore ordenada deveria ser, bem como o resultado do caminhamento pré-ordem quando executado a partir da raiz da respectiva árvore.
Observação: A correção será feita em ambiente Bloodshed Dev C++, no padrão C ANSI. Assim, caso o aluno tenha desenvolvido seu código em outra IDE/Compilador, é importante que o aluno garanta que seu código também é compilável/executável em ambiente Dev C++. Essa é uma responsabilidade do aluno, e não da equipe de correção. Enviar seu código-fonte completo, com extensão “.c”.
❤❤Assessoria Acadêmica 041 - Alexia S.❤❤
****Precisando de ajuda c'hamar *****
*******(41) 9️⃣**2️⃣2️⃣6️⃣~-1️⃣4️⃣8️⃣1️⃣*******
⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔
❤❤Assessoria Acadêmica 041 - Alexia S.❤❤
****Precisando de ajuda c'hamar *****
*******(41) 9️⃣**2️⃣2️⃣6️⃣~-1️⃣4️⃣8️⃣1️⃣*******
⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔
.
.
✅--------------- MAPA —------------✅
4️⃣3️⃣-9️⃣ 9️⃣ 8️⃣ 0️⃣ 3️⃣ 2️⃣ 1️⃣ 7️⃣ 7️⃣
—------------ EXCLUSIVO —-------------
4️⃣3️⃣-9️⃣ 9️⃣ 8️⃣ 0️⃣ 3️⃣ 2️⃣ 1️⃣ 7️⃣ 7️⃣
—------- NOTA ALTA/MÁXIMA —-------
4️⃣3️⃣-9️⃣ 9️⃣ 8️⃣ 0️⃣ 3️⃣ 2️⃣ 1️⃣ 7️⃣ 7️⃣
.
.
.
*Precisando de Ajuda*
*➖* - *➖ *-* ➖ *- *➖*-*➖* *-* ➖* -* ➖ *-* ➖
No 4️⃣3️⃣-9️⃣ 9️⃣ 8️⃣ 0️⃣ 3️⃣ - 2️⃣ 1️⃣ 7️⃣ 7️⃣Você encontra esse mapa completo! Assessoria especializada em mapas Unicesumar. ✅
Garanta sua nota e peça já o seu mapa
---------------------------------------------------------------------------------
✅ MATERIAL INDIVIDUAL
✅ SEM PLÁGIO
✅ NOTA MÁXIMA
✅ DESENVOLVIDO COM RESPONSABILIDADE PARA VOCÊ
>>> WATTSAPP - +55 49 9112-4798 ♂️✅ <<<
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
✅ MATERIAL INDIVIDUAL
✅ SEM PLÁGIO
✅ NOTA MÁXIMA
✅ DESENVOLVIDO COM RESPONSABILIDADE PARA VOCÊ
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
✅ MATERIAL INDIVIDUAL
✅ SEM PLÁGIO
✅ NOTA MÁXIMA
✅ DESENVOLVIDO COM RESPONSABILIDADE PARA VOCÊ
>>> WATTSAPP - +55 49 9112-4798 ♂️✅ <<<
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
✅ MATERIAL INDIVIDUAL
✅ SEM PLÁGIO
✅ NOTA MÁXIMA
✅ DESENVOLVIDO COM RESPONSABILIDADE PARA VOCÊ
>>> WATTSAPP - 4️⃣9️⃣-9️⃣9️⃣1️⃣1️⃣2️⃣4️⃣7️⃣9️⃣8️⃣ ♂️✅ <<<
---------------------------------------------------------------------------------
*➖* - *➖ *-* ➖ *- *➖*-*➖* *-* ➖* -* ➖ *-* ➖
No 4️⃣3️⃣-9️⃣ 9️⃣ 8️⃣ 0️⃣ 3️⃣ - 2️⃣ 1️⃣ 7️⃣ 7️⃣Você encontra esse mapa completo! Assessoria especializada em mapas Unicesumar. ✅
Garanta sua nota e peça já o seu mapa
⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔
➖➖➖➖ MAPAS E ATIVIDADES ➖➖➖
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
➖*➖
➖*➖
4️⃣3️⃣-9️⃣ 9️⃣ 8️⃣ 0️⃣ 3️⃣ - 2️⃣ 1️⃣ 7️⃣ 7️⃣➖➖*
➖*➖
➖*➖
➖*➖
➖*➖
⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔
Respostas
Uma árvore binária se caracteriza por ser um conjunto de registros que satisfaz certas condições. É uma estrutura de dados mais geral.
Árvore binária
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define E 0
#define D 1
#define R -1
typedef struct NO {
int dado;
struct NO *esq;
struct NO *dir;
struct NO *pai;
} NO;
//Tipo árvore
typedef struct ARVORE{
NO *raiz;
}ARVORE;
ARVORE a;
void inicializaArvore(ARVORE arv);
void inicializaNo(NO* n, int val);
void insereNoArvoreOrdenada(int valor);
void preOrdem(NO* raiz);
void emOrdem(NO* raiz);
void posOrdem(NO* raiz);
void inicializaArvore(ARVORE arv)
{
arv.raiz = NULL;
}
void inicializaNo(NO* n, int val){
if(!n)
{
printf("Falha de alocacao.\n");
return;
}
n->pai = NULL;
n->esq = NULL;
n->dir = NULL;
n->dado = val;
}
void insereNoArvoreOrdenada(int valor)
{
NO* corrente = a.raiz;
NO* pai;
NO* novoNo = (NO*) malloc(sizeof(NO));
inicializaNo(novoNo, valor);
printf("Inserindo no %d. \n", novoNo->dado);
if(corrente == NULL)
{
a.raiz = novoNo;
printf("No inserido na raiz. \n");
return;
}
while(corrente){
pai = corrente;
if(novoNo->dado < corrente->dado){
corrente = corrente->esq;
if(!corrente){
printf("No inserido à esquerda do no %d. \n", pai->dado);
pai->esq = novoNo;
return;
}
}
else{
corrente = corrente->dir;
if(!corrente){
printf("No inserido à direita do no %d. \n", pai->dado);
pai->dir = novoNo;
return;
}
}
}
}
void preOrdem(NO* raiz){
if(raiz){
printf("%d \t", raiz->dado);
preOrdem(raiz->esq);
preOrdem(raiz->dir);
}
}
void emOrdem(NO* raiz){
if(raiz){
emOrdem(raiz->esq);
printf("%d \t", raiz->dado);
emOrdem(raiz->dir);
}
}
void posOrdem(NO* raiz){
if(raiz){
posOrdem(raiz->esq);
posOrdem(raiz->dir);
printf("%d \t", raiz->dado);
}
}
int main()
{
inicializaArvore(a);
insereNoArvoreOrdenada(2);
insereNoArvoreOrdenada(1);
insereNoArvoreOrdenada(0);
insereNoArvoreOrdenada(0);
insereNoArvoreOrdenada(0);
insereNoArvoreOrdenada(3);
insereNoArvoreOrdenada(0);
insereNoArvoreOrdenada(2);
insereNoArvoreOrdenada(5);
printf("\nBusca pre ordem: \n");
preOrdem(a.raiz);
}
Para saber mais sobre árvore binária, acesse: https://brainly.com.br/tarefa/17130737
#SPJ1
❤❤Assessoria Acadêmica 041 - Alexia S.❤❤
****Precisando de ajuda c'hamar *****
*******(41) 9️⃣**2️⃣2️⃣6️⃣~-1️⃣4️⃣8️⃣1️⃣*******
⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔