问答题
已知一具有n个结点的二叉树的中序遍历序列与后序遍历序列分别存放于数组IN[1:n]和POST[1:n]中,(设该二叉树各结点的数据值均不相同)。请写一建立该二叉树的二叉链表结构的非递归算法。该二叉链表的链结点结构为(1child,data,。rchild),其中data为数据域,lchild与rhild分别为指向该结点左、右孩子的指针域(当孩子结点不存在时,相应指针域为空,用nil表示)。【北京航空航天大学1998六(1 5分)】
【正确答案】正确答案:由二叉树的中序序列与后序序列也可以建立一棵二叉树 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
【答案解析】