Arvore binaria
#define ARVOREBINARIA_H_INCLUDED
#include
#include
typedef struct No { struct No *esq; struct No *dir; int dado; int elemento;
} No;
No *CriarArvore ();
void InserirElemento (No **, int);
No *ProcurarElemento (No *, int);
No *menorValor (No **);
void removerNo (No **raiz);
int remover (No **, int);
int exibirEmOrdem(No *);
int exibirPreOrdem(No *);
int exibirPosOrdem(No *);
#endif // ARVOREBINARIA_H_INCLUDED //---------------------------------------------------------------------------------------------------------------------------
#include "ArvoreBinaria.h"
// Criar
No *CriarArvore () { return NULL;
}
// Inserir void InserirElemento (No **pRaiz, int elemento) {
if (*pRaiz == NULL) { *pRaiz = malloc(sizeof(No)); (*pRaiz)->dado = elemento; (*pRaiz)->esq = NULL; (*pRaiz)->dir = NULL; }
if (elemento < (*pRaiz)->dado) { InserirElemento(&((*pRaiz)->esq), elemento); }
if (elemento > (*pRaiz)->dado) { InserirElemento(&((*pRaiz)->dir), elemento); }
}
No *ProcurarElemento (No *pRaiz, int elemento) { // Lista vazia if (pRaiz == NULL ) { return NULL; }
if (elemento == pRaiz->dado) { return pRaiz; }
if (elemento < pRaiz->dado) { return ProcurarElemento(pRaiz->esq, elemento); }
if (elemento > pRaiz->dado) { return ProcurarElemento(pRaiz->dir, elemento); }
}
No *menorValor (No **raiz)
{
No *aux = *raiz; if ((*raiz)->esq == NULL) { *raiz = (*raiz)->dir; return aux; } else { return menorValor(&((*raiz)->esq)); }
}
void removerNo (No **raiz)
{
No *pos = *raiz;
if ((*raiz)->esq == NULL && (*raiz)->dir == NULL) { *raiz = NULL; } else if ((*raiz)->esq == NULL) { *raiz =