Arvore binaria
/* Este programa criar uma arvore binaria */
/* autor: Cao Ji Kan Data: 20/03/2013 */
#include <stdlib.h>
#include <stdio.h>
struct treeNo { char info; struct treeNo *left; struct treeNo *right;
};
struct treeNo *root; /* primeiro no da arvore */ struct treeNo *geratree(int n); void emOrdem(treeNo *no); void posOrdem(treeNo *no); void preOrdem(treeNo *no);
main()
{
root = NULL; /* inicializa a ra¡z */ int n; printf("Digite o numeros de nos para uma arvore binaria!\n"); scanf("%d",&n); root = geratree(n); //printf("Impressao da arvore binaria:\n"); //implementação printf(" IN ORDEM \n"); emOrdem(root); printf("POS ORDEM \n"); posOrdem(root); printf("PRE ORDEM \n"); preOrdem(root); system("pause");
}
struct treeNo *geratree(int n)
{
struct treeNo *newno; int ne, nd; char x; if (n == 0) return NULL; else { ne = n/2; nd = n-1-ne; printf("Digite uma letra: "); getchar(); // pegar "enter". sem este nao funcina para C scanf("%c",&x); newno = (struct treeNo *) malloc(sizeof(struct treeNo)); if(!newno) { printf("sem memoria\n"); exit(0); } newno->info = x; newno->left = geratree(ne); newno->right = geratree(nd); return newno; }
}
void emOrdem(treeNo *no){ if(no != NULL){ emOrdem(no->left); printf("%c\n", no->info); emOrdem(no->right); }
}
void posOrdem(treeNo *no){ if(no != NULL){ posOrdem(no->left); posOrdem(no->right); printf("%c\n", no->info); }
}
void preOrdem(treeNo *no){ if(no != NULL){ printf("%c\n", no->info); preOrdem(no->left); preOrdem(no->right); }