/
Arvores par-impar.c
97 lines (86 loc) · 2.2 KB
/
Arvores par-impar.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <stdio.h>
#include <stdlib.h>
typedef struct node{
int dado;
struct node *dir, *esq;
}NODE;
void insert(NODE **apontno, int e){
if(*apontno == NULL){
*apontno = (NODE *)malloc(sizeof(NODE));
(*apontno)->dado = e;
(*apontno)->esq=NULL;
(*apontno)->dir=NULL;
}else{
if(e % 2 == 0){
insert(&(*apontno)->dir,e);
}
else{
insert(&(*apontno)->esq,e);
}
}
}
//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
}
}
//IMPRIME O PRIMEIRO NÓS, OS DA ESQUERDA, DEPOIS OS DA DIREITA.
void preordem(NODE *apontno){
if(apontno != NULL){
printf("%d\t",apontno->dado); //IMPRIME =8
preordem(apontno->esq); //IMPRIME <8
preordem(apontno->dir); //IMPRIME >8
}
}
//IMPRIME PRIMEIRO OS DA ESQUERDA, DEPOIS OS DA DIREIRA, POR ULTIMO O PRIMEIRO NÓ.
void posordem(NODE *apontno){
if(apontno != NULL){
posordem(apontno->esq); //IMPRIME <8
posordem(apontno->dir); //IMPRIME >8
printf("%d\t",apontno->dado); //IMPRIME =8
}
}
/*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");
}