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

菜鸟#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 用hc 05,做蓝牙控制小车 小车只能说初始遥控方向影响,后续不能更改
  • ¥15 51单片机怎么把每次输入键值保存到数组作为我的确认键的判断条件呢
  • ¥45 easy photo不能使用,求帮助
  • ¥15 c语言字符串单词入门问题报错
  • ¥30 我现在是双非人工智能专业不知道要不要转到软件工程专业
  • ¥15 请问12脉波整流机组的外特性曲线具体是如何推导
  • ¥15 abaqus里的python算法
  • ¥100 如何在思科模拟器中进入CEF模式
  • ¥15 Simulink 仿真如何使用MATLAB function模块获取到仿真过程中某一仿真时刻输入到模块的函数的值?
  • ¥50 关于#微信小程序#的问题:微信小程序支持h5实现webrtc h264 h265低延迟传输渲染,能付费帮我们解决一下吗