dado
#include
#define T 10
#define true 1
#define false 0
#define AUTO true
struct noh { int chave; int altura; struct noh *esquerda, *direita;
};
typedef struct noh noh;
// Funcoes auxliares int menu(); noh* criaNovoNoh(int valor); void insereNovoNoh(noh** arvore, noh* novo); void mostraEmOrdem(noh* arvore); void mostraPreOrdem(noh* arvore); void mostraPosOrdem(noh* arvore); noh* localizaNoh(noh* arvore, int valor); void removeNoh(noh** arvore, int valor); void vetorToarvore(int *v, noh** arvore); void mostrarNoh(noh* no);
int calculaAltura(noh *no); int maior(int a, int b); int altura(noh* no); void ajustarAlturaArvore(noh* no); int fatorBalanceamento(noh* arvore); noh* rotacaoDireita(noh* arvore); noh* rotacaoEsquerda(noh* arvore); noh* rotacaoEsquerdaDireita(noh* arvore); noh* rotacaoDireitaEsquerda(noh* arvore); void balancearArvore(noh** arvore);
// Funcao principal int main()
{
noh* arvore = NULL; // Árvore vazia noh* aux = NULL; int valor;
int vetor[T] = {3, 50, 6, 12, 23, 9, 100, 3, 11, 15};
#if AUTO vetorToarvore(vetor, &arvore); #endif
do {
switch (menu()) {
case 1: printf("Valor? "); scanf("%d", &valor); insereNovoNoh(&arvore, criaNovoNoh(valor)); break;
case 2: mostraEmOrdem(arvore); break;
case 3: mostraPreOrdem(arvore); break;
case 4: mostraPosOrdem(arvore); break;
case 7: printf("Valor? "); scanf("%d", &valor); aux = localizaNoh(arvore, valor); if (aux) printf("Noh encontrado!\n"); else printf("Noh nao encontrado!\n"); break;
case 8: printf("Valor? "); scanf("%d", &valor); removeNoh(&arvore, valor); break;
case 9: printf("Valor? ");