数据结构(C语言描述)
答案:2 悬赏:30 手机版
解决时间 2021-04-05 15:54
- 提问者网友:嘚啵嘚啵
- 2021-04-05 05:30
数据结构(C语言描述)
最佳答案
- 五星知识达人网友:青灯有味
- 2021-04-05 06:10
#include
#include
#include
#define DataType int
#define MAXSIZE 1000
typedef struct node{
DataType data;
struct node *lchild;
struct node *rchild;
}BiTreeNode;
DataType BT[MAXSIZE];
BiTreeNode* BuildBTree(DataType BT[], int n, int i)
{
BiTreeNode * node;
if(i>=n || (node=(BiTreeNode*)malloc(sizeof(BiTreeNode)))==NULL) return NULL;
node->data = BT[i];
node->lchild = BuildBTree(BT, n, 2*i+1);
node->rchild = BuildBTree(BT, n, 2*i+2);
return node;
}
void PrintLevel(BiTreeNode * bt, int level, int l)
{
if(!bt) return;
if(l < level)
PrintLevel(bt->lchild, level,l+1);
if(l == level)
printf("%4d",bt->data);
if(l < level)
PrintLevel(bt->rchild, level,l+1);
}
void PrintTree(BiTreeNode *bt,char pre,char sur,int depth,int level){
if(bt==NULL) return ;
int i=0;
while(++i printf("%4d",bt->data); // 输出当前节点
while(i++ printf("
");
PrintTree(bt->lchild,pre,sur,depth,level+1);
PrintTree(bt->rchild,pre,sur,depth,level+1);
}
void CTBT(int n)
{ // 建立初始n个节点的完全二叉树
while(n--) BT[n] = n;
}
int main()
{
int i,n,depth;
BiTreeNode *bt;
scanf("%d",&n);
CTBT(n);
bt = BuildBTree(BT, n, 0);
depth = (int)(log(n)/log(2))+1;
i=0;
while(++i<=depth)
{
printf("
The %dth Level:",i);
PrintLevel(bt, i,1);
}
printf("
");
PrintTree(bt,' ','-',depth,1);
return 0;
}经调试这个没问题,完成了要求的三个功能
#include
#include
#define DataType int
#define MAXSIZE 1000
typedef struct node{
DataType data;
struct node *lchild;
struct node *rchild;
}BiTreeNode;
DataType BT[MAXSIZE];
BiTreeNode* BuildBTree(DataType BT[], int n, int i)
{
BiTreeNode * node;
if(i>=n || (node=(BiTreeNode*)malloc(sizeof(BiTreeNode)))==NULL) return NULL;
node->data = BT[i];
node->lchild = BuildBTree(BT, n, 2*i+1);
node->rchild = BuildBTree(BT, n, 2*i+2);
return node;
}
void PrintLevel(BiTreeNode * bt, int level, int l)
{
if(!bt) return;
if(l < level)
PrintLevel(bt->lchild, level,l+1);
if(l == level)
printf("%4d",bt->data);
if(l < level)
PrintLevel(bt->rchild, level,l+1);
}
void PrintTree(BiTreeNode *bt,char pre,char sur,int depth,int level){
if(bt==NULL) return ;
int i=0;
while(++i
while(i++
");
PrintTree(bt->lchild,pre,sur,depth,level+1);
PrintTree(bt->rchild,pre,sur,depth,level+1);
}
void CTBT(int n)
{ // 建立初始n个节点的完全二叉树
while(n--) BT[n] = n;
}
int main()
{
int i,n,depth;
BiTreeNode *bt;
scanf("%d",&n);
CTBT(n);
bt = BuildBTree(BT, n, 0);
depth = (int)(log(n)/log(2))+1;
i=0;
while(++i<=depth)
{
printf("
The %dth Level:",i);
PrintLevel(bt, i,1);
}
printf("
");
PrintTree(bt,' ','-',depth,1);
return 0;
}经调试这个没问题,完成了要求的三个功能
全部回答
- 1楼网友:不甚了了
- 2021-04-05 07:20
这个我会,可以帮你写!追问那请你写一写
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯