node* build_tree_by_pre_in(int *pre, int *in, int n)
{
if (0 == n)
return NULL;
int v = pre[0];
int i = map[v];
node *root = new node(v);
root->l = build_tree_by_pre_in(pre + 1, in, i);
root->r = build_tree_by_pre_in(pre + 1 + i, in + 1 + i, n - i - 1);
return root;
}