急,求助!有关二叉树的创建。(100分)

  • 主题发起人 主题发起人 wolfmaster
  • 开始时间 开始时间
W

wolfmaster

Unregistered / Unconfirmed
GUEST, unregistred user!
近日自学数据结构,发现一道题目不是很难,但是就是描述不出来。望高手帮忙解决一下。
一棵完全二叉树存于顺序表sa中,sa.elem[1..sa.last]含节点值。试编写算法,
由此顺序存储结构建立该二叉树的二叉链表。
按理说是创建的时候从根节点开始,按照层次依次创建,但是描述不出来,HELP!
 
加分数了!第一个回答正确的给全部分数。
 
Status CreateBitree_SqList(Bitree &T,SqList sa)//根据顺序存储结构建立二叉链表
{
Bitree ptr[sa.last+1];
//该数组储存与sa中各结点对应的树指针
if(!sa.last)
{
T=NULL;
//空树
return;
}
ptr[ 1 ]=(BTNode*)malloc(sizeof(BTNode));
ptr[ 1 ]->data=sa.elem[ 1 ];
//建立树根
T=ptr[ 1 ];
for(i=2;i<=sa.last;i++)
{
if(!sa.elem) return ERROR;
//顺序错误
ptr=(BTNode*)malloc(sizeof(BTNode));
ptr->data=sa.elem;
j=i/2;
//找到结点i的双亲j
if(i-j*2) ptr[j]->rchild=ptr;
//i是j的右孩子
else
ptr[j]->lchild=ptr;
//i是j的左孩子
}
return OK;
}//CreateBitree_SqList

 
多谢,这下可以交差了。
 
后退
顶部