#include <stdio.h> #include <stdlib.h> #include <math.h> #define ElementType int
//node structure constructor typedef struct bt { ElementType data; struct bt *lchild, *rchild; } BinaryTreeNode,*BTRoot;
//function declear InOrder(BTRoot root); PreOrder(BTRoot root); PostOrder(BTRoot root);
//the main function to excute main() { BTRoot r=malloc(sizeof(BinaryTreeNode)); CreateTree(r,1); printf("\nPreorder :"); PreOrder(r); printf("\nInorder :"); InOrder(r); printf("\nPostorder:"); PostOrder(r); while(1) ; return 0; }
//inorder function InOrder(BTRoot root) { if(!root) return 0; InOrder(root->lchild); printf("%4d",root->data); InOrder(root->rchild); }
//preorder function PreOrder(BTRoot root) { if(!root) return 0; printf("%4d",root->data); PreOrder(root->lchild); PreOrder(root->rchild); }
//postorder function PostOrder(BTRoot root) { if(!root) return 0; PostOrder(root->lchild); PostOrder(root->rchild); printf("%4d",root->data); } /*receive the input data and create a node each time!*/ CreateTree(BTRoot root,int NodeNum) /* Preorder */ { ElementType x; int i,layer;
layer=log(NodeNum)/log(2)+1; printf("\nInput data for Node %d in layer %d :",NodeNum,layer); scanf("%d",&x); root->data=x;
printf("create lchild for Node %d in layer %d (0 for No)?",NodeNum,layer); scanf("%d",&i); if(i==0) root->lchild=NULL; else {root->lchild=(BTRoot)malloc(sizeof(BinaryTreeNode)); CreateTree(root->lchild,2*NodeNum); }
printf("create rchild for Node %d in layer %d (0 for No)?",NodeNum,layer); scanf("%d",&i); if(i==0) root->rchild=NULL; else {root->rchild=(BTRoot)malloc(sizeof(BinaryTreeNode)); CreateTree(root->rchild,2*NodeNum+1); } return 0; }

|