//IMPRIME EM ORDE CRESCENTE.
 void emordem(NODE *apontno){
    if(apontno != NULL){
        emordem(apontno->esq); //IMPRIME <8
        printf("%d\t",apontno->dado); //IMPRIME =8
        emordem(apontno->dir); //IMPRIME >8
    }
 }
示例#2
0
void emordem(arvore *r) {
	if (r != NULL) {
		emordem(r->esq);
		printf("Caractere Alfanumérico:%c Caractere Binário:%d  \n" , r->alfa, r->bin);
		emordem(r->dir);
	}
}
示例#3
0
void emordem(arvore *aux){
	if(aux!=NULL){
		emordem(aux->esq);
		printf("%i ",aux->info);
		emordem(aux->dir);
	}
}//metodo de ordem
示例#4
0
void emordem(no *raiz) {								//faz a impressão do menor para o maior, logo ela ira diminuir ao maximo os valores, imprimir, aumentar o minimo possivel e reimprimir
    if(raiz != NULL) {									//verifica se o elemento existe
        emordem(raiz->esq);								//re-executa a função com o elemento da esquerda para chegar no menor possivel
        printf("%d ", raiz->chave);						//faz a impressão
        emordem(raiz->dir);								//re-executa a função aumentando os valores chave
    }													//ou seja imprime em ordem crescente de valores chave
}
示例#5
0
void emordem(no *arvore){
	if(arvore != NULL){
		emordem(arvore->esq);
		printf("%d\n",arvore->chave);
		emordem(arvore->dir);
	}
}
void emordem(struct arvore*no){
	if(no!=NULL){
		emordem(no->esq);
		printf ("%d\n", no->chave);
		emordem(no->dir);
	}
}
	void emordem(struct pessoa*no) //Imprimimos os antepassados de uma pessoa. Uma vez que não é possível voltar no emordem, basta fazer com que a raiz seja a pessoa cujos antepassados desejamos saber
{
	if(no!=NULL)
	{
		emordem(no->esq); 
		printf("%s", no->nome);
		emordem(no->dir);
	}
}
示例#8
0
文件: largura.c 项目: privati/ED
void emordem(Arv *raiz)
{
    if (raiz != NULL)
    {
        emordem(raiz->esq);
        printf("%d.", raiz->elem);
        emordem(raiz->dir);
    }
}
void emordem(struct arvore*no)//Imprime Infixa
{	
	if(no!=NULL)
	{
		emordem(no->esquerda);
		if (no->entrada[0] >= 48 && no->entrada[0] <=57)
		printf("(");		
		printf("%s", no->entrada); 
		if (no->entrada[0] >= 48 && no->entrada[0] <=57)
		printf(")");
		emordem(no->direita);
	}
}
/* A impressoo Em Ordem eh utilizada para a impressao da notacao infixa*/
void emordem(struct arvore*no)
{	
	if(no!=NULL)
	{
		emordem(no->esq);
		if (no->entrada[0] >= 48 && no->entrada[0] <=57)
		printf("(");		
		printf("%s", no->entrada); 
		if (no->entrada[0] >= 48 && no->entrada[0] <=57)
		printf(")");
		emordem(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");
 }
int main()
{
	struct arvore *raiz = NULL;
	int i = 1, j = 1, k, escolha;
	char a[1], b[1];
	printf("Ola! Este programa ira converter uma entrada em notacao polonesa para a notacao polonesa reversa (RPN) e infixa.\n");
	printf("Digite sua equacao em notacao polonesa\n(separe os simbolos e numeros todos por um 'espaco' e depois tecle 'Enter'):\n");
	raiz = (struct arvore *)malloc(sizeof(struct arvore)); // cria a raiz
	raiz->esq = NULL; //aterra a raiz
	raiz->dir = NULL;
	scanf("%s", a);
	strcpy(raiz->entrada, a);
	scanf("%s", a);
	while(a[0] == 42 || a[0] == 43 || a[0] == 45 || a[0] == 47) //enquanto sao entrados sinais, cahama a funcao insertsign
	{
		insertsign(raiz, a);
		scanf("%s", a);
		i++;	
	} 
	insertnum(raiz, a, j, i); //quando sao inseridos numeros, passa a chamar a funcao insertnum
	for (j = 2; j < i + 2; j++)
	{
		scanf("%s", a);
		insertnum(raiz, a, j, i);
	}
	while (escolha != 3) //repete o menu ate que seja escolhida a opcao "sair"
	{
		printf("\n\nO que voce deseja fazer? Digite o numero correspondente!\n");
		printf("1 - Impressao na notacao polonesa reversa (RPN)\n2 - Impressao na notacao infixa\n3 - Sair\n\n");
		scanf("%d", &escolha);
		if (escolha > 3 || escolha <1) //caso seja escolhida uma opcao fora do menu, uma mensagem de erro eh impressa
		{
			printf("Favor entrar com uma das opcoes do menu.\n");
		}
		else
		{
			switch(escolha)
			{
				case 1:
					printf("\nPolonesa reversa:\n");
					posordem(raiz);
					break;
				case 2:
					printf("\nNotacao infixa:\n");	
					printf("(");
					emordem(raiz);
					printf(")");
			}
		}
	}
}
int main()
{
	struct arvore *raiz = NULL;
	int i = 1, j = 1, k, menu;
	char a[1], b[1];
	printf("Digite sua equacao em notacao polonesa separando os numeros e sinais por espaco e entao tecle Enter:\n");
	raiz = (struct arvore *)malloc(sizeof(struct arvore)); //aloca memoria para a raiz criada
	raiz->esquerda = NULL;
	raiz->direita = NULL;
	scanf("%s", a);
	strcpy(raiz->entrada, a);
	scanf("%s", a);
	while(a[0] == 42 || a[0] == 43 || a[0] == 45 || a[0] == 47) 
	{
		InserirSinal(raiz, a);
		scanf("%s", a);
		i++;	
	} 
	InserirNro(raiz, a, j, i); 
	for (j = 2; j < i + 2; j++)
	{
		scanf("%s", a);
		InserirNro(raiz, a, j, i);
	}
	while (menu != 3) //repete o menu ate que seja escolhida a opcao "sair"
	{
		printf("Digite 1 para imprimir em RPN, 2 para imprimir em notacao infixa e 3 para sair\n");
		scanf("%d", &menu);
		if (menu > 3 || menu <1) 
		{
			printf("Escolher uma opção válida para o menu:\n");
		}
		else
		{
			switch(menu)
			{
				case 1:
					printf("\nRPN:\n");
					posordem(raiz);
					break;
				case 2:
					printf("Infixa:\n");	
					emordem(raiz);
					break;
			}
		}
	}
}
示例#14
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;


}
示例#15
0
int main(int argc, char const *argv[])
{
	arvore a, *alfaToBin;
	int menu;
	alfaToBin->esq = NULL;
	alfaToBin->dir = NULL;
	alfaToBin->ordenar = 17; alfaToBin->alfa = 'H'; alfaToBin->bin = 10001;
	alfaToBin = &a;
	alfaToBin = inicializarArvore(alfaToBin);
	while (true) {
		scanf("%d", &menu);
		switch (menu) {
		case 1: emordem(alfaToBin);
		case 2: traduzirPredefinidos(alfaToBin);
		case 3: traduzirQualquer(alfaToBin);
		case 4: break;
		}
	}
	return 0;
}
示例#16
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;
}
示例#17
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);
    }
}
	void main(){
		char nome[10];
		char nome1[10];
		char nome2[10];
		int d;
		char i,h;
		struct ponteiro p;
		struct ponteiro q;
		struct pessoa *raiz=(struct pessoa *)malloc(sizeof(struct pessoa));//Alocamos memoria para a raiz da arvore
		printf("Qual a primeira pessoa da arvore genealógica?\n");
		gets(nome);
		raiz->nome=nome;
		raiz->geracao = 0;
		printf("%s\n", raiz->nome);	
		insira(raiz);//Começamos a raiz propriamente aqui
		
		printf("Adicionar mais alguem? <S/N>");
		scanf("%c", &h);
		if(h=='S' || h=='s'){
			adiciona(raiz);
		}
		
		printf("Deseja fazer mais alguma coisa? \n1-)imprimir os membros por geracao \n2-)imprimir os antepassados de alguem \n ");
		printf("3-) imprimir labelled bracketing \n4-) calcular grau de parentesco \n5-) encerrar programa\n");//Aqui temos o menu
		scanf("%c",&i);
		
		if(i='1'){
		
				printf("Qual geracao?");
				scanf("%i", &d);
				print_gen(raiz,d);
		}
		else if(i='2'){
		
			
				printf("De quem?");
				gets(nome);
				emordem(raiz);
		}
		
			else if(i='3'){
			
				imprimir_lb(raiz);
			}
		
			else if(i='4'){
			
				printf("Pessoa 1:");
				gets(nome1);
				printf("Pessoa 2");
				gets(nome2);
				
				
				
				if(p.ponteiro->geracao > q.ponteiro->geracao){
					grau(q.ponteiro, p.ponteiro, q.ponteiro->geracao);
				}else{
					grau(p.ponteiro,q.ponteiro, p.ponteiro->geracao);
				}
			}
			else{
				printf("Bye Bye");
			}
		}
示例#19
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;
}
示例#20
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;

}