A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Árvores Binárias de Pesquisa. Árvore Binária Definição: –Estrutura de dados encadeada de nodos –Acíclica –Cada nodo pode apontar para 0, 1 ou 2 outros.

Apresentações semelhantes


Apresentação em tema: "Árvores Binárias de Pesquisa. Árvore Binária Definição: –Estrutura de dados encadeada de nodos –Acíclica –Cada nodo pode apontar para 0, 1 ou 2 outros."— Transcrição da apresentação:

1 Árvores Binárias de Pesquisa

2 Árvore Binária Definição: –Estrutura de dados encadeada de nodos –Acíclica –Cada nodo pode apontar para 0, 1 ou 2 outros nodos – Em uma árvore não vazia existe um nodo distinto chamado raiz.

3 Arvore Binária Definição –Cada nodo de uma árvore binária inicia uma nova árvore. –As árvores apontadas pelo nodo raiz são chamadas de sub-árvore esquerda e sub-árvore direita

4 Árvore Binária raiz

5 Árvore Binária Definições –Os nodos para os quais um nodo (nodo pai) aponta são ditos nodos filhos (esquerdo e direito). –Nodo Folha: Nodo da árvore que não possui nenhum filho. –A profundidade de um nodo é a distância deste nodo até a raiz.

6 Árvore Binária Definições –Um conjunto de nodos com a mesma profundidade é denominado nível da árvore. –Altura de uma árvore binária: Comprimento do caminho entre o nodo raiz e o nodo folha mais distante da raiz. Ou seja é a profundidade do nodo mais profundo.

7 Árvore Binária de Busca Definição –Árvore binária onde: Os nodos possuem uma chave de busca única. os elementos da sub-arvore esquerda são menores que o elemento do nodo raiz e os elementos da sub- árvore direita são maiores que a do nodo raiz (considerando a chave de busca).

8 Árvore binária de Busca 5 37 raiz

9 O TAD Árvore binária de busca Operações: –Inicializa: Cria a árvore vazia (a referência para a raiz é NULL) –Pesquisa: Tenta recuperar um elemento existente na árvore dada uma chave de pesquisa. –Insere: Insere um elemento na árvore –Remove: Remove um elemento da árvore dada uma chave de pesquisa.

10 Implementação // definição do tipo typedef struct { int valor; int chave; } registro; typedef struct nodo { registro reg; struct nodo *esq,*dir; }nodo; typedef nodo* arvore;

11 Implementação Operações: void inicializa(arvore *t); void insere(arvore *t, registro r); registro pesquisa(arvore *t, int x); void retira(arvore *p, int x);

12 Implementação Inicializa: Faz a raiz apontar para nulo void inicializa(arvore *t){ *t=NULL; }

13 Implementação void insere(arvore *t, registro r){ if (*t==NULL){ *t= malloc(sizeof(nodo)); (*t)->dir=NULL; (*t)->esq=NULL; (*t)->reg=r; } else

14 Implementação if (r.chave reg.chave) { insere(&(*t)->esq,r); } else if (r.chave>(*t)->reg.chave) { insere(&(*t)->dir,r); } else printf("Ja existe um nodo com esta chave!"); }

15 Implementação registro pesquisa(arvore *t, int x){ if (*t==NULL) { printf("Não existe este elemento\n"); return (registro) {0,0}; } if (x reg.chave) { return pesquisa(&(*t)->esq,x); } if (x>(*t)->reg.chave) { return pesquisa(&(*t)->dir,x); } return (*t)->reg; }

16 Implementação void antecessor(arvore q, arvore *r) { if ( (*r)->dir != NULL) { antecessor(q,&(*r)->dir); } else { q->reg=(*r)->reg; q = *r; *r= (*r)->esq; free(q); }

17 Implementação void retira(arvore *p, int x) { arvore aux; if ((*p) == NULL) { printf(registro não existente\n"); } else if ( x reg.chave) { retira(&(*p)->esq,x); } else if (x> (*p)->reg.chave) { retira(&(*p)->dir,x); }

18 Implementação else if ((*p)->esq==NULL){ aux = *p; *p = (*p)->dir; free(aux); } else if ((*p)->dir==NULL){ aux = *p; *p = (*p)->esq; free(aux); } else { antecessor(*p,&(*p)->esq); }

19


Carregar ppt "Árvores Binárias de Pesquisa. Árvore Binária Definição: –Estrutura de dados encadeada de nodos –Acíclica –Cada nodo pode apontar para 0, 1 ou 2 outros."

Apresentações semelhantes


Anúncios Google