第10周项目1(2)-由顺序存储结构转为二叉链存储结构
分类:
文章
•
2025-03-07 08:45:10
-
/*
-
*Copyright(c)2017,烟台大学计算机学院
-
*All right reserved.
-
*文件名:sk.cpp btree.h btree.cpp
-
*作者:盛凯
-
*完成日期:2017年11月30日
-
*版本号:v1.0
-
*
-
*问题描述:由顺序存储结构转为二叉链存储结构
-
*输入描述:无
-
*程序输出:见运行结果
-
sk.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;
}
-
程序运行结果如图所示:
-

-
反思总结:
-
运用了递归思想和双亲结点与孩子节点的序号联系。