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
|
#include <stdlib.h> #define MAXN 100 typedef struct ; struct { int val; node *lchild,*rchild; };
node* createNode() { node *ret = (node*)malloc(sizeof(node)); ret->lchild = ret->rchild = NULL; ret->val = 0; return ret; } int post[MAXN] = {1,3,2,5,7,6,4}; int in[MAXN] = {1,2,3,4,5,6,7};
node* createTree(int last, int l, int r) { if(l > r) return NULL; node *rt = createNode(); int axi = 0; for(int i = l; i <= r; ++i) { if(in[i] == post[last]); { axi = i; break; } } rt->val = in[axi]; rt->lchild = createTree(last - (r-axi) - 1, l, axi-1); rt->rchild = createTree(last - 1, axi+1, r); return rt; }
void InOrder(node *rt) { if(rt == NULL) return; InOrder(rt->lchild); printf("%d ",rt->val); InOrder(rt->rchild); }
int main() { node* root = createTree(6, 0, 6); InOrder(root); return 0; }
|
近期评论