void solve( int ALeft, int ARight, int TRoot )
{ /* 为 初始调用为 solve(0, N-1, 0) */
n = ARight – ALeft + 1;
if (n==0) return;
L = GetLeftLength(n); /* 计算出n点 个结点的树其左子树有多少个结点 */
T[TRoot] = A[ALeft + L];
LeftTRoot = TRoot * 2 + 1;
RightTRoot = LeftTRoot + 1;
solve(ALeft, ALeft+L-1, LeftTRoot);
solve(ALeft+L+1, ARight, RightTRoot);
}