Árvore de Busca Binária em C

508 palavras 3 páginas
Árvore de Busca Binária em C
Definição:
Uma árvore binária de busca (ou árvore binária de pesquisa) é uma estrutura de dados de árvore binária baseada em nós, onde todos os nós da subárvore esquerda possuem um valor numérico inferior ao nó raiz e todos os nós da subárvore direita possuem um valor superior ao nó raiz (esta é a forma padrão, podendo as subárvores serem invertidas, dependendo da aplicação). O objetivo desta árvore é estruturar os dados de forma flexível, permitindo busca binária.
Header :: arvore.h typedef struct nodo Nodo; struct nodo { int dado;
Nodo *esq;
Nodo *dir;
};
Nodo* iniciaArvore(); int arvoreVazia(Nodo *r);
Nodo* iniciaNodo(int dado);
Nodo* insereArvore(Nodo *r, int dado);
Nodo* removeArvore(Nodo *r, int dado);
Nodo* buscaArvore(Nodo *r, int dado); void preOrder(Nodo *r); void inOrder(Nodo *r); void posOrder(Nodo *r);
Assinatura das Funções :: arvore.c
#include
#include
#include "arvore.h"
Nodo* iniciaArvore() { return NULL;
}
int arvoreVazia(Nodo *r) { return r == NULL;
}
Nodo* iniciaNodo(int dado) {
Nodo *novo; novo = (Nodo *) malloc(sizeof(Nodo)); if(!novo) return NULL; novo->dado = dado; novo->esq = NULL; novo->dir = NULL; return novo;
}
Nodo* insereArvore(Nodo *r, int dado) {

if (arvoreVazia(r)) r = iniciaNodo(dado); else if (dado < r->dado) r->esq = insereArvore(r->esq, dado); else r->dir = insereArvore(r->dir, dado); return r;
}
Nodo* removeArvore(Nodo *r, int dado) { if(arvoreVazia(r)) return NULL; else if(dado < r->dado) r->esq = removeArvore(r->esq, dado); else if(dado > r->dado) r->dir = removeArvore(r->dir, dado); else { if(r->esq == NULL && r->dir == NULL) { free(r); r = iniciaArvore();
}
else if(r->dir == NULL) {
Nodo *morto; morto = r; r = r->esq; free(morto); } else if(r->esq == NULL) {
Nodo *morto; morto = r; r = r->dir; free(morto); } else {
Nodo *aux; aux = r->esq; while(aux->dir != NULL) { aux = aux->dir;
}
r->dado = aux->dado; aux->dado =

Relacionados

  • Arvore binaria de busca - codigo em c
    770 palavras | 4 páginas
  • arvores
    2061 palavras | 9 páginas
  • Arvore avl c++
    1024 palavras | 5 páginas
  • Arvore Binaria
    2327 palavras | 10 páginas
  • ÁRVORES
    1380 palavras | 6 páginas
  • arvore binariaa
    2431 palavras | 10 páginas
  • Aplicação de arvores binárias
    1548 palavras | 7 páginas
  • oiioi
    4278 palavras | 18 páginas
  • Testando
    853 palavras | 4 páginas
  • Árvore rubro negra
    4598 palavras | 19 páginas