根据两种遍历序列建树

1
2
3
4
5
6
7
void (int &index, int inLeft, int inRight, int postLeft, int postRight) {    
if (inLeft > inRight) return;
index = postRight;
int i = 0;
while (in[i] != post[postRight]) i++;
dfs(tree[index][0], inLeft, i - 1, postLeft, postLeft + (i - inLeft) - 1); dfs(tree[index][1], i + 1, inRight, postLeft + (i - inLeft), postRight - 1);
}