给定前序序列以及中序序列可以建立一棵静态二叉树。
如有前序序列 pre = (1, 2, 3, 4, 5, 6)。
中序序列 in = (3, 2, 4, 1, 6, 5)。
下面给出算法:
void getlevel(int root, int st, int ed, int idx){
if(st > ed) return;
tree[idx] = pre[root];
int i = st;
while(i < ed && in[i] != pre[root]) i++;
buildtree(root + 1, st, i - 1, idx * 2 + 1);
buildtree(root + i - st + 1, i + 1, ed, idx * 2 + 2);
}
此时同时获得了一棵静态二叉树,顺序遍历便是层序序列。