Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Estrutura de Dados I: Pesquisa em Árvores Binárias Ordenadas, Notas de estudo de Engenharia Telemática

Neste documento, é apresentada a pesquisa em árvores binárias ordenadas, com a implementação das operações de busca e inserção ordenada. A busca ordenada é uma variante da busca binária, que mantém a árvore balanceada, garantindo que os elementos menores fiquem no lado esquerdo da raiz e os maiores no lado direito.

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 30/11/2010

samuel-santos-22
samuel-santos-22 🇧🇷

4.6

(41)

262 documentos

1 / 1

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
1
Disciplina: Estrutura de Dados I
Professor: Alex Sandro C. Rego
Pesquisa em Árvores Binárias Ordenadas
Operação de busca
no* buscaord( arvore a, int chave ){
if ( a == NULL )
return NULL;
else if ( chave < a->dado )
return buscaord( a->esq, chave );
else if ( chave > a->dado )
return buscaord( a->dir, chave )
else
/* Se cair aqui, o nó foi encontrado */
return a ;
}
Busca linear ordenada
/* Esta operação adiciona um elemento na árvore na posição correta para que sua
propriedade fundamental seja mantida: elementos menores no lado esquerdo da raiz
relativa, e elementos maiores no lado direito da raiz relativa */
void insere_ord( arvore *a, int chave) {
if (*a == NULL) {
*a = (no*)malloc(sizeof(no));
(*a)->dado = chave;
(*a)->esq = (*a)->dir = NULL;
} else if ( chave < (*a)->dado ) {
insere_ord( &(*a)->esq, chave );
} else if (chave > (*a)->dado ) {
insere_ord( &(*a)->dir, chave );
}
}
/* Outra implementação: neste caso, a funcao tem como valor de retorno o eventual
novo nó raiz da (sub)árvore. */
no* insere_ord( arvore a, int chave) {
if (a == NULL) {
a=(no*)malloc(sizeof(no));
a->dado = chave;
a->esq = a->dir = NULL;
} else if ( chave < a->dado ) {
a->esq = insere( a->esq, chave );
} else {
a->dir = insere( a->dir, chave );
}
return a;
}

Pré-visualização parcial do texto

Baixe Estrutura de Dados I: Pesquisa em Árvores Binárias Ordenadas e outras Notas de estudo em PDF para Engenharia Telemática, somente na Docsity!

Disciplina: Estrutura de Dados I

Professor: Alex Sandro C. Rego

Pesquisa em Árvores Binárias Ordenadas

Operação de busca

no* buscaord( arvore a, int chave ){ if ( a == NULL ) return NULL; else if ( chave < a->dado ) return buscaord( a->esq, chave ); else if ( chave > a->dado ) return buscaord( a->dir, chave ) else /* Se cair aqui, o nó foi encontrado */ return a ; }

Busca linear ordenada /* Esta operação adiciona um elemento na árvore na posição correta para que sua propriedade fundamental seja mantida: elementos menores no lado esquerdo da raiz relativa, e elementos maiores no lado direito da raiz relativa */

void insere_ord( arvore a, int chave) { if (a == NULL) { a = (no)malloc(sizeof(no)); (a)->dado = chave; (a)->esq = (a)->dir = NULL; } else if ( chave < (a)->dado ) { insere_ord( &(a)->esq, chave ); } else if (chave > (a)->dado ) { insere_ord( &(*a)->dir, chave ); } }

/* Outra implementação: neste caso, a funcao tem como valor de retorno o eventual novo nó raiz da (sub)árvore. / no insere_ord( arvore a, int chave) { if (a == NULL) { a = (no*)malloc(sizeof(no)); a->dado = chave; a->esq = a->dir = NULL; } else if ( chave < a->dado ) { a->esq = insere( a->esq, chave ); } else { a->dir = insere( a->dir, chave ); } return a; }