Boa noite ! Estou com um probleminha aqui. Meu algoritmo funciona na parte da criação e inserção dos elementos na árvore de busca , mas não estou conseguindo colocar a saída igual à saída pedida no exercício , será que alguém poderia me dar uma luz de como posso prosseguir.
Link da questão : https://www.urionlinejudge.com.br/judge/pt/problems/view/1195
#include<stdio.h>
#include<stdlib.h>
struct Tree{
struct Tree *left;
struct Tree *right;
int info;
};
typedef struct Tree *tree;
tree *new_tree(){
tree *raiz=(tree*) malloc(sizeof(tree));
if(raiz!=NULL){
*raiz = NULL;
}
return raiz;
}
int insert (tree *raiz,int valor){
if(raiz == NULL){
return 0;
}
struct Tree *new = (struct Tree*) malloc(sizeof(struct Tree));
if(new == NULL){
return 0;
}
new->info = valor;
new->right = NULL;
new->left = NULL;
if(*raiz == NULL){
*raiz = new;
}
else{
struct Tree *constant = *raiz;
struct Tree *ant = NULL;
while(constant != NULL){
ant = constant;
if(valor == constant->info){
free(new);
return 0;
}
if(valor > constant->info){
constant = constant->right;
}
else{
constant= constant->left;
}
}
if(valor > ant->info){
ant->right = new;
}
else{
ant->left = new;
}
}
return 1;
}
void pre_order(tree *raiz){
if(raiz == NULL){
return;
}
if(*raiz != NULL){
printf("\nPre .: %d",(*raiz)->info);
pre_order(&((*raiz)->left));
pre_order(&((*raiz)->right));
}
}
void in_order(tree *raiz){
if(raiz == NULL){
return;
}
if(*raiz != NULL){
in_order(&((*raiz)->left));
printf("\nIn..: %d",(*raiz)->info);
in_order(&((*raiz)->right));
}
}
void post_order(tree *raiz){
if(raiz == NULL){
return ;
}
if(*raiz != NULL){
post_order(&((*raiz)->left));
post_order(&((*raiz)->right));
printf("\nPost:%d",(*raiz)->info);
}
}
int main(){
tree *raiz= new_tree();
int casos,elements,num[500],j,i;
printf("Type numbre of cases");
scanf("%d",&casos);
for(i=0;i<casos;i++){
printf("Type numbre of elements");
scanf("%d",&elements);
for(j=0;j<elements;j++){
scanf("%d",&num[j]);
insert(raiz,num[j]);
}
printf("Case %d: ",i);
pre_order(raiz);
in_order(raiz);
post_order(raiz);
*raiz = NULL;
}
return 0;
}