
Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
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
1 / 1
Esta página não é visível na pré-visualização
Não perca as partes importantes!

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; }