面试题6:重建二叉树

题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出下图所示的二叉树并输出它的头结点。二叉树的定义如下:

1
2
3
4
5
6
7
8
9
template<typename T>
struct BinaryTreeNode{
T data;
BinaryTreeNode* left;
BinaryTreeNode* right;
BinaryTreeNode(T t=T()):data(t),left(NULL),right(NULL)
{}
};