0
点赞
收藏
分享

微信扫一扫

根据前序和中序重建二叉树的代码,出了错误 请指教


代码如下:

#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;
}


但是无法得出结果,请问一下是为什么?

举报

相关推荐

0 条评论