题干:
二叉链表存储结构如下:typedef struct BiNode{
ElemType data;
struct BiNode *lchild,*rchild;
}BiNode,*BiTree;
算法声明如下,请用递归思想完成该算法
BiTree create(ElemType A[],int i){
....
}
思想:
正常创建即可
函数:
BiTree create(ElemType A[],int i)//i表示当前元素下标
{
if(i>MAXSIZE)//递归出口,MAXSIZE是数组实际长度
return NULL;
BiNode *p=(BiNode *)malloc(sizeof(BiNode));
p->data=A[i-1];//头结点放进去
//树是从地址1开始创建的,但实际中要从数组的0地址开始,所以i要减1
p->lchild=create(A,2*i);//递归创建左子树
p->rchild=create(A,2*i+1);
return p;
}
测试:
#include<stdio.h>
#include <stdlib.h>
#include<math.h> //数

这篇博客介绍了如何使用二叉链表结构和递归思想来从给定的数组创建二叉树。算法重点在于根据数组元素构建树的节点,并通过递归调用来处理左右子节点的构建。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



