代码如下:
#include <iostream.h>
class node
{
public:
char value;
node(char a)
{
value=a;
lchild=NULL;
rchild=NULL;
}
node* lchild;
node* rchild;
};
void Rebuild(char *pPreOrder,char* pInOrder,int nTreeLen,node** pRoot)
{
//检查边界条件
if(pPreOrder==NULL || pInOrder==NULL)return;
//获得前序遍历的第一个节点
node *ptr=new node(*pPreOrder);
//判断是否是根节点
if(*pRoot==NULL)*pRoot=ptr;
if(nTreeLen==1)return;
int leng=0;
char *temp=pPreOrder;
//查找左子树长度
while(*(temp++) !=*pPreOrder)
{
leng++;
}
//递归建立左子树
Rebuild(pPreOrder+1,pInOrder,leng,&(ptr->lchild));
//右子树
Rebuild(pPreOrder+leng,pInOrder,nTreeLen-leng,&(ptr->rchild));
}
void pre(node *pRoot)
{
if(pRoot)
{
cout<<pRoot->value<<" ";
pre(pRoot->lchild);
pre(pRoot->rchild);
}
}
int main()
{
char P[7]="abdcef";
char I[7]="dbaecf";
node* pRoot=NULL;
Rebuild(P,I,6,&pRoot);
pre(pRoot);
return 0;
}
但是无法得出结果,请问一下是为什么?