Você está na página 1de 3

/* create a binary tree and traverse it preorder, inorder, and postorder*/ #include <stdio.h> #include <stdlib.h> #include <time.

h> struct treeNode { struct treeNode *leftPtr; /* ponteiro para subarvore esq uerda*/ int data; /*valor nodal*/ struct treeNode *rightPtr;/* ponteiro para subarvore dir eita*/ }; /*fim da estrutura Nodal arvore*/ typedef struct treeNode TreeNode; /*sinonimo para estrutura tree Node */ typedef TreeNode *TreeNodePtr; /*sinonimo para estrutura TreeNod e* */ /*prototypes */ void void void void insertNode( TreeNodePtr *treePtr, int value ); inOrder( TreeNodePtr treePtr ); preOrder(TreeNodePtr treePtr ); postOrder(TreeNodePtr treePtr );

/* Comea a execuo do funo main */ int main ( void ) { int i; /* contador para o loop de 1-10 */ int item; /*Varivel para guardar valores aleatrios*/ TreeNodePtr rootPtr = NULL; /* inicializar a rvore vazia */ srand ( time(NULL ) ); printf (" Os nmeros colocados na rvore esto: \n"); /* inserir valores aleatrios entre 0 e 14 na rvore */ for ( i = 1; i <= 10; i++ ) { item = rand () % 15; printf( "%3d, item); insertNode (&rootPtr, item); } /* fim do for */ /*transversal preOrder */ printf( "n\nA transversal preOrder : \n" ); preOrder( rootPtr ); /*transversal inOrder */ printf( "n\nA transversal inOrder : \n" ); inOrder( rootPtr ); /*transversal postOrder */

printf( "n\nA transversal postOrder : \n" ); postOrder( rootPtr ); return 0; /* indica a finalizao com exito */ } /* fim da Main */ /* inserir n na rvore */ void insertNode( TreeNodePtr *treePtr, int value ) { /* se a arvore est vazia */ if (*treePtr ==NULL ) { *treePtr = malloc( sizeof(TreeNode )); /*se a memoria estiver alocada, ento atribuir valor*/ if ( ( ( ( *treePtr *treePtr *treePtr *treePtr != NULL) { ) ->data = value; ) ->leftPtr = NULL; ) ->rightPtr = NULL;

} /* fim do if *\ else { printf("%d no inserido. Sem memoria disponvel. \n" value); } /* fim do else*/ else { /* arvore no vazia */ /* dado para inserir maior que dado atual no n */ if ( value < ( *treePtr ) -> data ) { insertNode ( &( (*treePtr ) ->LeftPtr, value); } /* fim do if */ /* dado para inserir mairo que dado atual do n) */ else if ( value > ( *treePtr ) -> data ) { insertNode ( &( (*treePtr ) ->rightPtr, value); } /* fim do if else */ } /* fim do else*/ } /* fim do else*/ } /* fim da funo inserNode */ /* Comea a execuo inorder */ void inOrder ( TreeNodePtr treePtr) { /*se arvore no esta vazia, ento traverse */ if (treePtr != NULL) { inOrder (treeptr->LeftPtr ); printf ( "%3d, treePtr->data ); inOrder (treeptr->rightPtr ); } /* fim do if */

} /* fim da funo inOrder */ /* Comea a execuo preOrder */ void preOrder ( TreeNodePtr treePtr) { /*se arvore no esta vazia, ento traverse */ if (treePtr != NULL) { printf ( "%3d, treePtr->data ); preOrder (treeptr->LeftPtr ); preOrder (treeptr->rightPtr ); } /* fim do if */ } /* fim da funo preOrder */ /* Comea a execuo postOrder */ void postOrder ( TreeNodePtr treePtr) { /*se arvore no esta vazia, ento traverse */ if (treePtr != NULL) { postOrder (treeptr->LeftPtr ); postOrder (treeptr->rightPtr ); printf ( "%3d, treePtr->data ); } /* fim do if */ } /* fim da funo postOrder */

Você também pode gostar