A Estrutura de Dados
Por: matheusmgc • 14/6/2024 • Trabalho acadêmico • 2.033 Palavras (9 Páginas) • 27 Visualizações
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <locale.h>
/*Declaração da Estrutura do Registro*/
struct carro
{
};
char nome[30];
char marca[30];
int ano;
float preco;
/*Declaração da Estrutura da Árvore*/
struct No
{
};
int numero;
struct carro x;
struct No *esquerda;
struct No *direita;
typedef struct No No;
/*Criar Árvore*/
void criarArvore(No **pRaiz)
{
*pRaiz = NULL;
}
/*Inserir Elemento*/
void inserir(No **pRaiz, int numero, struct carro x)
{
if (*pRaiz == NULL)
{
*pRaiz = (No *)malloc(sizeof(No));
(*pRaiz)->esquerda = NULL;
(*pRaiz)->direita = NULL;
(*pRaiz)->numero = numero;
(*pRaiz)->x = x;
}
else
{
if (numero < (*pRaiz)->numero)
inserir(&(*pRaiz)->esquerda, numero, x);
if (numero > (*pRaiz)->numero)
inserir(&(*pRaiz)->direita, numero, x);
}
}
/*Teste Nó Maior Direita*/
No *MaiorDireita(No **no)
{
if ((*no)->direita != NULL)
return MaiorDireita(&(*no)->direita);
else
{
No *aux = *no;
if ((*no)->esquerda != NULL)
*no = (*no)->esquerda;
else
*no = NULL;
return aux;
}
}
/*Teste Nó Maior Esquerda*/
No *MenorEsquerda(No **no)
{
if ((*no)->esquerda != NULL)
return MenorEsquerda(&(*no)->esquerda);
else
{
No *aux = *no;
if ((*no)->direita != NULL)
*no = (*no)->direita;
else
*no = NULL;
return aux;
}
}
/*Remover Elemento*/
void remover(No **pRaiz, int numero)
{
if (*pRaiz == NULL)
{
printf("\nNúmero não existe na árvore! \n");
return;
}
if (numero < (*pRaiz)->numero)
remover(&(*pRaiz)->esquerda, numero);
else if (numero > (*pRaiz)->numero)
remover(&(*pRaiz)->direita, numero);
else
{
No *pAux = *pRaiz;
if (((*pRaiz)->esquerda == NULL) && ((*pRaiz)->direita == NULL))
{
free(pAux);
printf("\nRemovido com Sucesso! \n");
(*pRaiz) = NULL;
}
else
{
if ((*pRaiz)->esquerda == NULL)
{
(*pRaiz) = (*pRaiz)->direita;
pAux->direita = NULL;
free(pAux);
pAux = NULL;
printf("\nRemovido com Sucesso! \n");
}
else
{
if ((*pRaiz)->direita == NULL)
...