永发信息网

数据结构(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;
}经调试这个没问题,完成了要求的三个功能

全部回答
  • 1楼网友:不甚了了
  • 2021-04-05 07:20
这个我会,可以帮你写!追问那请你写一写
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯