예제 #1
0
void preordem (no *arvore){
	if(arvore != NULL){
		printf("%d\n",arvore->chave);
		preordem(arvore->esq);
		preordem(arvore->dir);
	}
}
예제 #2
0
void preordem(no *raiz) {								//faz a impressão e depois percorre a arvore primeiramente pelo lado esquerdo, ou seja a impressão comessará pela raiz
    if(raiz != NULL) {									//verifica se o elemento existe
        printf("%d ", raiz->chave);						//faz a impressão
        preordem(raiz->esq);							//re-executa a função diminuindo os valores chave
        preordem(raiz->dir);							//re-executa a função aumentando os valores chave
    }													//ou seja, imprimirá de cima para baixo da esquerda para a direita
}
예제 #3
0
void preordem(arvore *aux){
	if(aux!=NULL){
		printf("%i ",aux->info);
		preordem(aux->esq);
		preordem(aux->dir);
	}
}//método de preordem
//IMPRIME O PRIMEIRO NÓS, OS DA ESQUERDA, DEPOIS OS DA DIREITA.
 void preordem(NODE *apontno){
    if(apontno != NULL){
        printf("%d\t",apontno->dado); //IMPRIME =8
        preordem(apontno->esq);  //IMPRIME <8
        preordem(apontno->dir); //IMPRIME >8
    }
 }
/* percurso em pre-ordem recursiva */
void preordem(apontador n)
{
	if (n==null)
		return;
	printf("%d\n", n->chave);
	preordem(n->esq);
	preordem(n->dir);
}
예제 #6
0
파일: largura.c 프로젝트: privati/ED
void preordem(Arv *raiz)
{
    if (raiz != NULL)
    {
        printf("%d.", raiz->elem);
        preordem(raiz->esq);
        preordem(raiz->dir);
    }
}
void preordem(no *raiz){ //função que imprime os valores da árvore em "preordem"
	if(raiz == NULL){
		return;
	}
	printf("%d ", raiz->chave);
	preordem(raiz->esq);
	preordem(raiz->dir);
	return;
}
void preordem(struct arvore*no)
{
	if(no!=NULL)
	{
		printf("%d\n", no->chave); //aqui voce faz o que quiser quando tiver no no. imprimir chave, ou qualquer outra coisa
		preordem(no->esq);
		preordem(no->dir);
	}
}
/*FUNÇAO PARA DELETAR NÓS
void remover(NODE **pRaiz, int numero){
    NODE *pAux = NULL;
    if(numero < (*pRaiz)->dado)
        remover(&(*pRaiz)->esq, numero);
    else if (numero > (*pRaiz)->dado)
        remover(&(*pRaiz)->dir, numero);
    else{
        pAux = *pRaiz;
        if((*pRaiz)->esq == NULL)
            *pRaiz = (*pRaiz)->dir;
        else if((*pRaiz)->dir == NULL)
            *pRaiz = (*pRaiz)->esq;
    }
}
*/
 int main(){
    NODE *arvore = NULL;
    insert(&arvore,1);
    insert(&arvore,3);
    insert(&arvore,5);
    insert(&arvore,7);
    insert(&arvore,9);
    insert(&arvore,2);
    insert(&arvore,4);
    insert(&arvore,6);
    insert(&arvore,8);
    insert(&arvore,10);

    printf("EM ORDEM:");
    printf("\n");
    emordem(arvore);
    printf("\n\n");
    printf("PRE ORDEM:");
    printf("\n");
    preordem(arvore);
    printf("\n\n");
    printf("POS ORDEM:");
    printf("\n");
    posordem(arvore);
    printf("\n\n");
 }
예제 #10
0
int main() {
  struct ARVORE_AVL arv;
  criar_arvore_avl(&arv);

  int tam; //número de elemento que serão inseridos na árvore
  int i;
  int chave; //variável que armazena a chave do elemento quer será removido
  int teste = 0; //variável que verifica se o usuário quer continuar removendo
  bool bol;
  struct INFO *valores;

  //lê os elementos que serão inseridos na árvore
  leitura(&tam,&valores);

  //insere e efetua o balanceamento dos elementos
  for (i=0; i < tam; i++) inserir_arvore_avl(&arv, valores[i]);

  //exibe em pré-ordem
  preordem(&arv);

  if (tam > 0) {
    printf ("Digite 1 se deseja remover: ");
    scanf ("%d", &teste);

    while ((tam > 0) && (teste == 1)) { //verifica se há pelo menos um elemento na árvore para ser removido
        printf ("Chave do elemento: ");
        scanf ("%d", &chave);
        remover_aux(&arv,chave,&bol);
        printf ("\n");
        preordem(&arv);
        printf ("\nDigite 1 se deseja continuar removendo: ");
        scanf ("%d", &teste);
        tam--;
    }
  }
  else if (tam == 0) printf ("\nArvore vazia.\n\n");
  else printf ("\nValor invalido.\n\n");

  limpar_arvore_avl(&arv);

  return 0;
};
void menu(no *raiz){
	int j = 1;
	int n, i;
	printf("Agora que voce ja selecionou os elementos da arvore,\nselecione o que deseja fazer: ");
	while(j!=0){
		printf("\n\n1 : Imprime a arvore em ordem\n2 : Imprime a arvore em preordem\n3 : Imprime a arvore em posordem\n");
		printf("4 : Imprime em Labelled Bracketing\n5 : Buscar um numero\n6 : Remover um numero\n7 : Inserir um numero\n");
		printf("8 : Sair\n");
		scanf("%d", &i);
		switch(i){  //para cada número que o usuário entrar o programa realizará um comando diferente
			case 1:
				ordem(raiz);
			break;
			case 2:
				preordem(raiz);
			break;
			case 3:
				posordem(raiz);
			break;
			case 4:
				lbracketing(raiz);
			break;
			case 5:
				printf("\nEscreva o elemento que deseja buscar: ");
				scanf("%d", &n);
				busca(&raiz, n);
			break;
			case 6:
				printf("\nEscreva o elemento que deseja remover, escreva um que esta na arvore! :");	
				scanf("%d", &n);
				remover(&raiz, n);
			break;
			case 7:
				printf("Digite o elemento que deseja inserir, digite um que nao esteja na arvore! :");
				scanf("%d", &n);
				inserir(&raiz, n);
			break;
			case 8:
				j=0;
			break;	
			default	:
				printf("Insira um valor válido!\n");
			break;		
								
		}
	}
	return;
}
예제 #12
0
파일: largura.c 프로젝트: privati/ED
int main ()
{

    Arv *a = NULL;
    int op;
    scanf("%d",&op);

    while(op != -1)
    {
        if(op == 1)
        {
            int elem;
            scanf("%d", &elem);
            a = inserir(a, elem);
        }
        else
        {
            int elem;
            scanf("%d", &elem);
            a = remover(a, elem);
        }

        scanf("%d",&op);
    }


    printf("Em largura: ");
    imprime_largura(a);

    printf("\nPre ordem: ");
    preordem(a);

    printf("\nEm ordem: ");
    emordem(a);

    printf("\nPos ordem: ");
    posordem(a);

    return 0;


}
예제 #13
0
파일: main.c 프로젝트: streeck/ed1
int main(){
	ARVORE_BINARIA arv1;

	criar(&arv1);

	NO *node;
	INFO item;

	item.chave = 1; 
	item.valor = '+';
	node = criar_raiz(&arv1, &item);

	item.chave = 2;
	item.valor = 'A';
	inserir_esquerda(node, &item);

	item.chave = 3;
	item.valor = '*';
	node = inserir_direita(node, &item);

	item.chave = 4;
	item.valor = 'B';
	inserir_esquerda(node, &item);

	item.chave = 5;
	item.valor = 'C';
	node = inserir_direita(node, &item);

	emordem(&arv1);
	printf("\n");

	preordem(&arv1);
	printf("\n");

	posordem(&arv1);
	printf("\n");

	return 0;
}
예제 #14
0
main() {
    int i, a, b, c, d, e;									//variaveis auxiliares
    printf("Numero de Insercoes: ");
    scanf("%d", &a);										//recolhe o numero de elementos
    printf("Elementos: ");

    for(i=0; i<a; i++) {
        fflush;
        scanf("%d", &b);									//recolhe os elementos
        inserir(&raiz, b);								 	//faz a inserção na arvore
    }
    printf("\n--->  MENU  <---\n-> 1 para imprimir a arvore.");			//print do MENU
    printf("\n-> 2 para inserir elementos.");
    printf("\n-> 3 para remover elementos.");
    printf("\n-> 4 para buscar elementos.");
    printf("\n-> 0 para sair\n");
    fflush;
    scanf("%d", &c);

    while(c!=0) {														//codigo do MENU
        fflush;
        switch(c) {
        case 1:
            system("cls");
            printf("Pre Ordem:\n");
            preordem(raiz);
            printf("\nPos Ordem:\n");
            posordem(raiz);
            printf("\nEm Ordem:\n");
            emordem(raiz);
            printf("\nLabelled Bracketing:\n");
            lb(raiz);
            printf("\n");
            break;
        case 2:
            system("cls");
            printf("Novo elemento: ");
            scanf("%d", &d);
            inserir(&raiz, d);
            break;
        case 3:
            system("cls");
            printf("Elemento para remocao: ");
            scanf("%d", &d);
            remover(&raiz, d);
            break;
        case 4:
            system("cls");
            printf("Elemento para busca: ");
            scanf("%d", &d);
            e = busca(raiz, d);
            if(e==1) printf("\nO elemento %d nao existe na arvore.\n", d);
            if(e==2) printf("\nO elemento %d existe na arvore.\n", d);
            break;
        }
        printf("\n--->  MENU  <---\n-> 1 para imprimir a arvore.");
        printf("\n-> 2 para inserir elementos.");
        printf("\n-> 3 para remover elementos.");
        printf("\n-> 4 para buscar elementos.");
        printf("\n-> 0 para sair\n");
        fflush;
        scanf("%d", &c);
    }
}
예제 #15
0
int main(void){
	arvore *raiz=NULL;

	int op,achou,num;

	do{
		printf("\nMENU");
		printf("\n1 - Insere na Arvore");
		printf("\n2 - Consultar um no da Arvore");
		printf("\n3 - Consultar toda Arvore em pre-ordem");
		printf("\n4 - Consultar toda Arvore em ordem");
		printf("\n5 - Consultar toda Arvore em pos-ordem");
		printf("\n6 - Excluir um no da Arvore");
		printf("\n7 - Esvaziar toda Arvore");
		printf("\n8 - Sair");
		printf("\nOpcao: ");
		scanf("%i",&op);

		if(op==1){
			
			printf("\nNumero a inserir na Arvore: ");
			scanf("%i",&num);
			raiz=insere(raiz,num);
			printf("\nNumero inserido!");
		}//opção insere

		if(op==2){

			if(raiz==NULL)
				printf("\nArvore vazia!");
			else{
				printf("\nNumero a ser consultado: ");
				scanf("%i",&num);
				achou=0;
				achou=consultar(raiz,num,achou);

				if(achou==1)
					printf("\nNumero existente na Arvore!");
				else
					printf("\nNumero nao existente na Arvore!");
			}
		}//opção busca numero

		if(op==3){

			if(raiz==NULL)
				printf("\nArvore vazia!");
			else{
				printf("\nListando em pre-ordem\n");
				preordem(raiz);
			}
		}//opçao listar preordem

		if(op==4){

			if(raiz==NULL)
				printf("\nArvore vazia!");
			else{
				printf("\nListando em ordem\n");
				emordem(raiz);
			}
		}//opçao listar em ordem

		if(op==5){

			if(raiz==NULL)
				printf("\nArvore vazia!");
			else{
				printf("\nListando em pos-ordem\n");
				posordem(raiz);
			}
		}//opçao listar pos ordem

		if(op==6){

			if(raiz==NULL)
				printf("\nArvore vazia!");
			else{
				printf("\nInforme o numero a ser removido: ");
				scanf("%i",&num);
				achou=0;
				achou=consultar(raiz,num,achou);
				//verifica se o nó existe
				if(achou==0)
					printf("\nNumero nao existente na Arvore!");
				else{
					raiz=remover(raiz,num);
					printf("\nNumero removido!");
				}
			}
		}//opçao remoção

		if(op==7){

			if(raiz==NULL)
				printf("\nArvore vazia!");
			else{
				raiz=desalocar(raiz);
				printf("\nArvore desalocada!");
			}
		}//opçao desaloca

		printf("\n************************************************************\n");

		getc(stdin);
	}while(op>0 && op<9 && op!=8);

	return 0;
}
예제 #16
0
int main(){
	int n,a,b;
	no *raiz, *aux;
	raiz = NULL;
	int opcao;

	while(opcao!=12){

		opcao = menu();
		switch(opcao){

			case 1:

			printf("\n>>>>>>>>>>>>><<<<<<<<<<<<<\n\n");
			printf("Digite -1 para terminar\n");
			printf("\n>>>>>>>>>>>>><<<<<<<<<<<<<\n\n");
			do{
				printf("Digite um numero: ");
				scanf("%d", &n);
				if(n!=-1){
					insere(n, &raiz);
				}
			}while (n!=-1);

                       //imprime(raiz,0);

			break;
			case 2:

			printf("\n>>>>>>>>>>>>><<<<<<<<<<<<<\n\n");
			printf("------> Pre-Ordem <------\n");
			printf("\n>>>>>>>>>>>>><<<<<<<<<<<<<\n\n");
			preordem(raiz);

			break;
			case 3:

			printf("\n>>>>>>>>>>>>><<<<<<<<<<<<<\n\n");
			printf("------> Em-Ordem <------\n");
			printf("\n>>>>>>>>>>>>><<<<<<<<<<<<<\n\n");
			emordem(raiz);

			break;
			case 4:

			printf("\n>>>>>>>>>>>>><<<<<<<<<<<<<\n\n");
			printf("------> Pos-Ordem <------\n");
			printf("\n>>>>>>>>>>>>><<<<<<<<<<<<<\n\n");
			posordem(raiz);

			break;
			case 5:

			consultarDetalhes(raiz);

			break;

			case 6:

			b=contarNos(raiz);
			printf("\n>>>>>>>>>>>>><<<<<<<<<<<<<\n\n");
			printf("  A arvore possui %d nos!\n",b);
			printf("\n>>>>>>>>>>>>><<<<<<<<<<<<<\n\n");

			break;
			case 7:

			printf("ARVORE BINARIA\n");
			imprime(raiz,0);

			break;
			default :

			printf("opcao nao existe! tente novamente");

			break;
		}

	}


	return 0;

}