菜鸟#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;
}

程序没有根本性的错误,只是数组下标从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

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