Ir ao conteúdo
  • Cadastre-se

C++ Perc. Pré Ordem em Árvore Bin


Posts recomendados

Olá!!

Meu código está compilando normalmente mas quando executo o programinha "apresenta problemas".

Se puder me ajudar agradeço.

 

EDIT: Vou colocar também a função de inserção na Arvore Binaria. Ao inserir deveria apontar para o nó pai mas isso parece não acontecer.

 

void inserir_recursivo(int val,T *raiz, T pai){
	
	if(*raiz == NULL){//Testar se o valor para onde o ponteiro está apontando é nulo
		printf("\n\n --> %d",val);
		T tmp = (T) malloc(sizeof(NODE));
		inicia_no(&tmp,val);
		tmp->pai = pai;
		*raiz = tmp;
		printf("\nINSERIDO COM SUCESSO!\n");
		printf("end: %x | pai: %x\n",&tmp,tmp->pai);
	}else{
		if(val < (*raiz)->valor)//Testar se o conteúdo valor no endereço de raiz é maior que o a ser inserido
			inserir_recursivo(val, &((*raiz)->esq),*raiz);//Recursividade passando o endereço no CONTEÚDO ENDEREÇO do nó à esquerda
		else if(val == (*raiz)->valor){
			printf("\nValor ja existente!\n");
			return;
		}else
			inserir_recursivo(val, &((*raiz)->dir),*raiz);//Recursividade passando o endereço no CONTEÚDO ENDEREÇO do nó à direita
	}
	
	return;
}

 

struct NODE
{
	int valor;
	struct NODE *dir;
	struct NODE *esq;
	struct NODE *pai;
};
typedef NODE *T;

void pre_ordem(T r){
	if(r == NULL) return;
	else{
		T tmp = r;
		while(tmp!=NULL){
			printf("\n%d",tmp->valor);
			tmp = tmp->esq;
			if((tmp==NULL) && (tmp->pai !=NULL)){
				T tmp2 = tmp->pai;
				if(tmp2){
					if(tmp2->dir!=NULL){
						tmp = tmp2->dir;
					}else return;
				}
			}
		}
		return;
	}
}

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...