问答题 已知一棵二叉树的先序遍历序列和中序遍历序列分别存于两个一维数组中,试编写算法建立该二叉树的二叉链表。【上海交通大学1999四(12分)】【江苏大学2005五、2(10分)】
【正确答案】正确答案:由一棵二叉树的前序遍历序列和中序遍历序列,可以唯一确定二叉树,请参见本章四、41题。确定二又树的算法如下: void PreInCreat(BiTree root,ElemType pre[],in[],int 11,h1,12,h2) (root=new(BiNode); //申请结点 root一>data=pre[11]; //pre[11]是根 for(i:12;ic:h2;i++) //在中序序列中查找根结点,它将二叉树分成左右子树 if(in[i]==pre[11])break; if(i:=12)root一>ichild=null; //无左子树 else PreInCreat(root一>ichild,pre,in,11+1,ii+(i一12),12,i一1); //递归建立左子树 if(i=--h2)root一>rchiId=null; //无右子树 else PreInCreat(root一>rchild,pre,in,11+(i一12)+1,hl,i+l,h2) //递归建立右子树 } //结束PreInCreat
【答案解析】