再看下面这个:
前序:[1, 2, 4, 5, 3, 6, 7]
pStart pEnd
中序:[4, 2, 5, 1, 5, 3, 7]
vStart...i vEnd
中序遍历得出如下结论:
左子结点长度 = i - vStart
右子结点长度 = vEnd - i
所以对于左子树来说:
前序遍历下标范围 = [pStart+1,pStart...(pre, pStart + 1, pStart + i - vStart, vin, vStart, i - 1);
root->right = preAndVin(pre,...,pStart+i-vStart-1]
中序遍历下标范围 = [vStart,i-1]
对于右子树来说
后序遍历下标范围 = [pStart+i-vStart,pEnd-1]
中序遍历下标范围..., pStart + i - vStart - 1, vin, vStart, i - 1);
root->right = postAndVin(post, pStart