数据结构题高手请进

来源:百度知道 编辑:UC知道 时间:2024/06/17 15:00:54
试编写一个递归算法,将用二叉链表表示的完全二叉树转换为二叉树的顺序(数组)存储表示,其中二叉树的指针为root。
二叉链表的结点(BinTreeNode)结构定义为
typedef struct tag_node
{
int data;//数据域
struct tag_node *lchild;//左链指针,指向左子女
struct tag_node *rchild;//右链指针,指向右子女
}BinTreeNode;
外部调用方式:linkedToSequent(root,a,0);
函数的首部为:void linkedtosequent(BinTreeNode *t,int a[],int i)

void linkedtosequent(BinTreeNode *t,int a[],int i)
{
if(t==NULL) //空了,结束
return ;
a[i]=t->data; //把data放进数组
i++; //下标i+1
linkedtosequent(t->lchild,a,i); //递归放左边的
linkedtosequent(t->rchild,a,i); //递归放右边的
}

//按先序序列把树中元素依次放入到数组中
void linkedtosequent(BinTreeNode *t,int a[],int i)
{
if(t!=NULL) //空了,结束
{a[i]=t->data; //把data放进数组
i++; //下标i+1
linkedtosequent(t->lchild,a,i); //递归放左边的
linkedtosequent(t->rchild,a,i); //递归放右边的
}
}