HWANGYUKAH 2019-06-01 22:46 采纳率: 0%
浏览 435
已采纳

菜鸟#c语言数据结构#二叉树

顺序存储的方式构造一颗排序树,但输出结果有误,不知如何下手

#include<stdio.h>
//
void createbtree(int *tree,int *data,int len)
{
    int i;
    int number;
    tree[1]=data[0];

    for(i=1;i<len;i++)
    {
        number=1;
        while(tree[number]!=0)
        {

            if(data[i]>tree[number])
            {
                number=2*number+1;
            }
            if(data[i]<tree[number])
            {
                number=2*number;
            }

        }
        tree[number]=data[i];
    }

}
//printf
void printf_btree(int *tree)
{
    int i;
    for(i=1;i<34;i++)
    {
        printf("%2d%8d\n",i,tree[i]);

    }
}
int main()
{
    int data[10]={6,5,9,4,7,3,2,8,1};
    int tree[34]={0};
    int len=10; 

    createbtree(tree,data,len);
    printf_btree(tree);

     return 0;
}

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-06-02 10:10
    关注

    程序没有根本性的错误,只是数组下标从0而不是1开始算

    // Q764195.cpp : This file contains the 'main' function. Program execution begins and ends there.
    //
    
    #include<stdio.h>
    //
    void createbtree(int* tree, int* data, int len)
    {
        int i;
        int number;
        tree[0] = data[0];
    
        for (i = 0; i < len; i++)
        {
            number = 1;
            while (tree[number] != 0)
            {
    
                if (data[i] > tree[number])
                {
                    number = 2 * number + 1;
                }
                if (data[i] < tree[number])
                {
                    number = 2 * number;
                }
    
            }
            tree[number] = data[i];
        }
    
    }
    //printf
    void printf_btree(int* tree)
    {
        int i;
        for (i = 0; i < 34; i++)
        {
            printf("%2d%8d\n", i, tree[i]);
    
        }
    }
    int main()
    {
        int data[9] = { 6,5,9,4,7,3,2,8,1 };
        int tree[34] = { 0 };
        int len = 9;
    
        createbtree(tree, data, len);
        printf_btree(tree);
    
        return 0;
    }
    

    0 6
    1 6
    2 5
    3 9
    4 4
    5 0
    6 7
    7 0
    8 3
    9 0
    10 0
    11 0
    12 0
    13 8
    14 0
    15 0
    16 2
    17 0
    18 0
    19 0
    20 0
    21 0
    22 0
    23 0
    24 0
    25 0
    26 0
    27 0
    28 0
    29 0
    30 0
    31 0
    32 1
    33 0

    如果问题得到解决,请点我回答左上角的采纳,谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 matlab实现基于主成分变换的图像融合。
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊