TNode* InPreToTree(char *pa, char *ia, int p1, int p2, int i1, int i2)
{
/*请在BEGIN和END之间实现你的代码*/
/*****BEGIN*****/
TNode* root=new TNode;
root->data=pa[p1];
root->left=NULL;
root->right=NULL;
if(p1==p2) return root;//如果p1==p2,则说明此节点无左右孩子,可直接返回
int num=i1;
while(num<=i2&&ia[num]!=root->data)
{
num++;//num记录中序序列中根节点的位置
}
int llen=num-i1;
int rlen=i2-num;
if(llen) root->left=InPreToTree(pa,ia,p1+1,p1+llen,i1,num-1);
if(rlen) root->right=InPreToTree(pa,ia,p2-rlen+1,p2,num+1,i2);
return root;
使用前序序列和后序序列构造一个二叉树
最新推荐文章于 2023-05-04 01:40:08 发布