Esempio n. 1
0
No *remocao(No **paiRaiz, int valorInserido){
	if(*paiRaiz == NULL) printf("O valor %d não existe na Arvore\n", valorInserido);
	else{
		if(valorInserido < (*paiRaiz)->numero) remocao(&(*paiRaiz)->esq,valorInserido);
		else if(valorInserido > (*paiRaiz)->numero) remocao(&(*paiRaiz)->dir,valorInserido);
		
		else{
			if((*paiRaiz)->esq != NULL){
				No *auxiliar = maisDireita(&(*paiRaiz)->esq);
				(*paiRaiz)->numero = auxiliar->numero;

				(*paiRaiz)->esq = remocao(&(*paiRaiz)->esq, auxiliar->numero);
			}
			else if((*paiRaiz)->dir != NULL){
				No *auxiliar = maisEsquerda(&(*paiRaiz)->dir);
				(*paiRaiz)->numero = auxiliar->numero;

				(*paiRaiz)->dir = remocao(&(*paiRaiz)->dir, auxiliar->numero);
			}
			else{
				printf("O valor %d foi removido!\n", (*paiRaiz)->numero);
				(*paiRaiz) = NULL;
			}			
		}
	}
	return (*paiRaiz);
}
void main(){
	int n, menu,i;
  struct arvore * raiz = (struct arvore *) malloc(sizeof(struct arvore));
  raiz->chave = 25;
  raiz->esq = NULL;
  raiz->dir = NULL;
    printf("Digite 1 para inserir, 2 para remover, 3 para buscar\n");
  	scanf("%d",&menu);
  switch(menu){
	case 1:
		printf("Digite o numero de elementos a serem inseridos: %d\n",n);
		scanf("%d",&n);
		for(i=1;i<=n;i++){
				scanf("%dº numero a ser inserido",&i);
				insercao(raiz,i);
		}
	
	case 2:
		printf("Digite o elemento a ser removido:%d\n",n);
		scanf("%d",&n);
		remocao(raiz,n);
    case 3:
    	printf("Digite o elemento a ser buscado:%d\n",&n);
    	scanf("%d",&n);
    	busca(raiz,n);
	
	default:
    	printf("Numero nao pertencente ao menu\n");
    	
}
}
Esempio n. 3
0
int main(){
  int opcao, chave, dado, tamanho, i;
  struct arvore *raiz = criaArvore(); // cria uma arvore com nenhum dado
  
  printf("Forneca o numero de chaves que deseja adicionar\n");
  scanf("%d", &tamanho);
  for(i = 0 ; i<tamanho ; i++){
      printf("\nForneca a chave do %do elemento\n", i+1);
      scanf("%d", &chave);
      insercao(&raiz, chave);
  }  
  printf("\n\n");
  
  menu(); // Cria o menu para o usuario escolher a opcao
  scanf("%d", &opcao);

  while (opcao >= 1 && opcao <= 5){
      switch(opcao){
          case 1: 
               printf("\nForneca o numero de chaves que deseja adicionar\n");
               scanf("%d", &tamanho);
               for(i = 0 ; i<tamanho ; i++){
                   printf("\nForneca a chave do %do elemento\n", i+1);
                   scanf("%d", &chave);
                   insercao(&raiz, chave);
               }  
               printf("\n\n");
               break;
          case 2: 
               printf("\nForneca a chave a ser removido\n");
               scanf("%d", &chave);
               remocao(raiz, chave);  
               printf("\n\n");
               break;
          case 3: 
               printf("\nForneca a chave que deseja buscar\n");
               scanf("%d", &chave);
               busca(raiz, chave);
               printf("\n\n");
               break;
          case 4: 
               printf("\nImpressao\n");
               impressao(raiz);
               printf("\n\n");
               break;
          case 5: 
               printf("\nImpressao em Labelled Bracketing \n");
               impressaoLabelledBracketing(raiz);
               printf("\n\n");
               break;
      }
      
      menu();
      scanf("%d", &opcao);
  }
  return 0;
  system("PAUSE");	
}
Esempio n. 4
0
int main(){	
	bool sair = false;
	int opcaoSelecionada;
	int valorInserido;

	No *Arvore = NULL;
	Arvore = (No*) malloc(sizeof(No));
	

	imprimirOpcoes();

	while(!sair){		
		scanf("%d", &opcaoSelecionada);		
		
		switch(opcaoSelecionada){
			case 0:
			;
				imprimirOpcoes();
				break;
			case 1:
			;
				printf("Digite o valor para Busca Recursiva\n");
				scanf("%d",&valorInserido);

				buscaRecursiva(Arvore, valorInserido);
				break;

			case 2:
			;
				printf("Digite o valor para Busca Iterativa\n");
				scanf("%d",&valorInserido);

				buscaIterativa(Arvore, valorInserido);
				break;

			case 3:
			;
				printf("Digite o valor para Insercao Iterativa\n");	
				scanf("%d",&valorInserido);

				insercaoIterativa(Arvore,valorInserido);	
				break;	

			case 4:
			;
				printf("Digite o valor para Insercao Recursiva\n");	
				scanf("%d",&valorInserido);

				insercaoRecursiva(Arvore,valorInserido);		
				break;

			case 5:
			;
				printf("Digite o valor para Remocao\n");	
				scanf("%d",&valorInserido);

				remocao(Arvore,valorInserido);
				break;

			case 6:
			;
				percursoPre(Arvore);
				break;

			case 7:
			;
				percursoIn(Arvore);
				break;

			case 8:
			;
				percursoPos(Arvore);
				break;
				
			case 9:
			;
				free(Arvore);
				sair = true;
				break;

			default:
			;
				printf("Opcao invalida, digite 0 para ver todas as opcoes validas\n\n");				
				break;
		}
		
	}

	return 0;
}