题目 根据前序和中序遍历序列重构二叉树
假如 输入前序遍历结果 abdcef
中系遍历结果 dbaecf
重建二叉树并输出后续遍历的序列 bdcefa
#include <iostream>
using namespace std;
struct Node{
Node* pLeft;
Node* pRight;
char chValue;
};
Node* build(char*pPreOrder, int preLeft,int preRight,char* pInOrder, int inLeft,int inRight)
{
Node *pRoot = new Node;
pRoot->chValue = pPreOrder[preLeft];
int i;
for(i=inLeft;i<=inRight;i++)
if(pInOrder[i]==pPreOrder[preLeft])
break;
int leftCount = i-inLeft;
int rightCount = inRight - i;
if(leftCount==0) pRoot->pLeft=NULL;
else pRoot->pLeft=build(pPreOrder, preLeft+1,preLeft+leftCount,pInOrder, inLeft,i-1);
if(rightCount==0) pRoot->pRight=NULL;
else pRoot->pRight=build(pPreOrder, preLeft+leftCount+1,preRight,pInOrder,i+1,inRight);
return pRoot