回 帖 发 新 帖 刷新版面

主题:二叉树算法实现

已知一棵二叉树的后序遍历序列和中序遍历序列,写出可以唯一确定一棵二叉树的算法

回复列表 (共2个回复)

沙发

后序序列的最后一个就是根,找到根之后再从中序序列中找到它,那它左边的就是左子树,右边的就是右子树,全部找出来了,然后就递归咯~~

板凳

char Pred,Ind; //假设前序序列和中序序列已经分别储存在数组Pre和In中 

Bitree Build_Sub(int Pre_Start,int Pre_End,int In_Start,int In_End)//由子树的前序和中序序列建立其二叉链表
{
  sroot=(BTNode*)malloc(sizeof(BTNode)); //建根
  sroot->data=Pre[Pre_Start];
  for(i=In_Start;In[i]!=sroot->data;i++); //在中序序列中查找子树根
  leftlen=i-In_Start;
  rightlen=In_End-i; //计算左右子树的大小
  if(leftlen)
  {
    lroot=Build_Sub(Pre_Start+1,Pre_Start+leftlen,In_Start,In_Start+leftlen-1);
    sroot->lchild=lroot;
  } //建左子树,注意参数表的计算
  if(rightlen)
  {
    rroot=Build_Sub(Pre_End-rightlen+1,Pre_End,In_End-rightlen+1,In_End);
    sroot->rchild=rroot;
  } //建右子树,注意参数表的计算
  return sroot; //返回子树根
}//Build_Sub 

我来回复

您尚未登录,请登录后再回复。点此登录或注册