/* * Árvores binárias de busca. */ #include #include typedef struct no { int i; /* chave */ struct no *esq, *dir; } No; No *arv(int i, No* esq, No* dir) { No* n = (No*) malloc (sizeof (No)); n->i = i; n->esq = esq; n->dir = dir; return n; } /* Cria a árvore 25 / \ 15 30 / / \ 5 26 35 */ No* exemplo() { return arv(25, arv(15, arv(5,NULL,NULL), NULL), arv(30, arv(26,NULL,NULL), arv(35,NULL,NULL))); } /* Cria a árvore 30 / \ 15 35 / \ 5 25 \ 26 */ No* exemplo1() { return arv(30, arv(15, arv(5,NULL,NULL), arv(25,NULL,arv(26,NULL,NULL))), arv(35,NULL,NULL)); } void inorder(No* p) { if (p != NULL) { inorder (p->esq); printf("%d ", p->i); inorder (p->dir); } } void preorder(No* p) { if (p != NULL) { printf("%d ", p->i); preorder (p->esq); preorder (p->dir); } } void escreve(No* p, void (*f)(No*)) { f(p); printf("\n"); } int verifica_busca(No* p) { return 0; } int main() { No *arv = exemplo(); No *arv1 = exemplo1(); escreve(arv,inorder); escreve(arv,preorder); escreve(arv1,inorder); escreve(arv1,preorder); int i = verifica_busca(arv1); return 0; }