#include<stdio.h>
#include<stdlib.h>
struct ARVORE{
int valor;
struct ARVORE *left, *right;
};
typedef struct ARVORE ARV;
ARV *criaArvore();
ARV *criaNoh(ARV *arvore, int v);
int vazia();
void imprimir(ARV *a);
int main(){
ARV *a = criaArvore();
int opc, valor;
do{
printf("1-inserir noh\n"
"2-imprimir\n"
"0-sair\n");
scanf("%d",&opc);
switch(opc){
case 1:
printf("informe um valor: ");
scanf("%d",&valor);
a = criaNoh(a, valor);
break;
case 2:
if(!vazia(a))
imprimir(a);
else
printf("AROVORE VAZIA\n");
break;
case 0: break;
default: printf("opcao invalida\n");
}
getche();
system("cls");
}while(opc != 0);
}
ARV *criaArvore(){
return NULL;
}
ARV *criaNoh(ARV *arvore, int v){
ARV *atemp;
if(arvore == NULL){
atemp = (ARV*)malloc(sizeof(ARV));
atemp ->valor = v;
atemp->left = criaArvore();
atemp->right = criaArvore();
return atemp;
}
else{
int dir;
atemp = arvore;
ARV *pai = NULL, *raiz = arvore;
while(atemp != NULL){
pai = atemp;
if(v <= atemp->valor){
dir = 0;
atemp = atemp->left;
}
else{
dir = 1;
atemp = atemp->right;
}
}
atemp = (ARV*)malloc(sizeof(ARV));
atemp->valor = v;
atemp->left = criaArvore();
atemp->right = criaArvore();
if(dir)
pai->right = atemp;
else
pai->left = atemp;
return raiz;
}
}
int vazia(ARV *a){
return a == NULL;
}
void imprimir(ARV *a){
printf("\nPai %d\n",a->valor);
if(a->left != NULL)
printf("Esq: %d\t",a->left->valor);
else
printf("Esq: NULL\t");
if(a->right != NULL)
printf("Dir: %d\t",a->right->valor);
else
printf("Dir: NULL\t");
if(a->left != NULL)
imprimir(a->left);
if(a->right != NULL)
imprimir(a->right);
}
Trabalhos.:
E-mail: mvf5system@gmail.com
Blog: http://mvf5-system.blogspot.com.br/
Facebook: https://www.facebook.com/mvf5systems
0 comentários:
Postar um comentário