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


c - arvoresbinord, Notas de estudo de Engenharia Telemática

Implementação das bibliotecas de Arvore binária ordenada

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 30/11/2010

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

4.6

(41)

262 documentos

1 / 2

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
OPERAÇÕES EM ÁRVORES BINÁRIAS ORDENADAS
Definição da Estrutura de Dados do tipo LISTA
#include<alloc.h>
#include<stdio.h>
#define ERRO 0
#define OK 1
typedef struct stno {
int dado;
struct stno *esq;
struct stno *dir;
}no;
typedef no* arvore;
Inicializa a árvore
void inicializa( arvore *a ) {
*a = NULL;
}
Verificar se a árvore está vazia
int vazia(arvore a) {
return (a == NULL);
}
Criação de um nó da árvore ordenada
/* cria um novo no na árvore, no local adequado,
do tipo arvore e retorna um ponteiro
para a arvore criada */
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;
}
Ir para o filho esquerdo
/* Caminha para o filho esquerdo da arvore passada como parametro, retornando
o endereco deste no' */
no* filhoesq(arvore a) {
if (vazia(a))
return NULL;
else
return ( a->esq );
}
Ir para o filho direito de uma árvore
/* Caminha para o filho direito da arvore passada como parametro, retornando
o endereco deste no' */
no* filhodir(arvore a) {
if (vazia(a))
return NULL;
pf2

Pré-visualização parcial do texto

Baixe c - arvoresbinord e outras Notas de estudo em PDF para Engenharia Telemática, somente na Docsity!

Disciplina: Estrutura de Dados I

Professor: Alex Sandro C. Rego

OPERAÇÕES EM ÁRVORES BINÁRIAS ORDENADAS

Definição da Estrutura de Dados do tipo LISTA #include<alloc.h> #include<stdio.h> #define ERRO 0 #define OK 1

typedef struct stno { int dado; struct stno *esq; struct stno *dir; }no;

typedef no* arvore;

Inicializa a árvore void inicializa( arvore *a ) { *a = NULL; }

Verificar se a árvore está vazia int vazia(arvore a) { return (a == NULL); }

Criação de um nó da árvore ordenada /* cria um novo no na árvore, no local adequado, do tipo arvore e retorna um ponteiro para a arvore criada */

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;

Ir para o filho esquerdo /* Caminha para o filho esquerdo da arvore passada como parametro, retornando o endereco deste no' / no filhoesq(arvore a) { if (vazia(a)) return NULL; else return ( a->esq ); }

Ir para o filho direito de uma árvore /* Caminha para o filho direito da arvore passada como parametro, retornando o endereco deste no' / no filhodir(arvore a) { if (vazia(a)) return NULL;

else return ( a->dir ); }

Pesquisar um nodo 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 ; }