问题及代码:
/*
*烟台大学计算机与控制工程学院
*作 者:孙丽玮
*完成日期:2016年11月10日
*问题描述:由顺序存储结构转为二叉链存储结构
*/
1、btree.h的代码(见二叉树算法库)
2、btree.cpp的代码(见二叉树算法库)
3、main.cpp的代码
#include <stdio.h>
#include <malloc.h>
#include "btree.h"
#define N 30
typedef ElemType SqBTree[N];
BTNode *trans(SqBTree a,int i)
{
BTNode *b;
if (i>N)
return(NULL);
if (a[i]=='#')
return(NULL); //当节点不存在时返回NULL
b=(BTNode *)malloc(sizeof(BTNode)); //创建根节点
b->data=a[i];
b->lchild=trans(a,2*i); //递归创建左子树
b->rchild=trans(a,2*i+1); //递归创建右子树
return(b); //返回根节点
}
int main()
{
BTNode *b;
ElemType s[]="0ABCD#EF#G####################";
b=trans(s,1);
printf("b:");
DispBTNode(b);
printf("\n");
return 0;
}
运行结果:
总结:
根据存储结构转换二叉树,递归算法。