关闭

已知一颗二叉树的前序和中序序列,唯一的确定一颗二叉树

标签: structnull算法
4760人阅读 评论(0) 收藏 举报
分类:

已知一颗二叉树的前序和中序序列,唯一的确定一颗二叉树,由此构造二叉树的递归算法。

设前序序列和中序序列分别存放两个一维数组,pre(1,n)和ind(1,n),按前序序列pre(i,j)和中序序列ind(u,v)递归构造二叉树,其根结点指针为s。

typedef  struct  bnode
{ Elemtype data;
   struct bnode *left,*right;
 }btree;
btree *bintree(int i,int j,int u,int v)
{
   int k,l;
   btree *head,*s;
   head=NULL;
   if(j>=i)
   {
       head=new btree; //建立根结点
       head->data=pre[i];
       k=u;
       while(ind[k]!=pre[i]) k++//在中序序列中查找根结点
       l=i+k-u;//l为左子树中最右下结点在前序序列中的位置
       if(k==u) //左子树为空
        head->left=NULL;
       else
        {
            s=bintree(i+1,l,u,k-1);//构造左子树
            head->left=s;
        }
      if(k==v)//右子树为空
        head->right=NULL;
      else
        {
            s=bintree(l+1,j,k+1,v);//构造右子树
            head->right=s;
        }            
   }      
    
return head;
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1130341次
    • 积分:12336
    • 等级:
    • 排名:第1146名
    • 原创:155篇
    • 转载:144篇
    • 译文:0篇
    • 评论:200条
    最新评论