数组建立二叉搜索树

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;

int arr[1000];
void set_down(int t,int a[1000]);
void print_tree(int t,int a[1000]);//xian xu
int main()
{
    int n,i;
    scanf("%d",&n);
    memset(arr,-1,sizeof(arr));
    int x;
    for(i=1; i<=n; i++)
    {
        scanf("%d",&x);
        set_down(x,arr);
    }
    print_tree(1,arr);
}
void set_down(int t,int a[1000])
{
    int n = 1;
    while(a[n] != -1)
    {
        if(t < a[n])
            n = n*2;
        else
            n = n*2+1;
    }
    a[n] = t;
}
void print_tree(int t,int a[1000]) // xian xu
{
    printf("%d  ",a[t]);
    if(a[t*2] != -1)
        print_tree(t*2,a);
    if(a[t*2+1] != -1)
        print_tree(t*2+1,a);
}

猜你喜欢

转载自blog.csdn.net/qq_40570748/article/details/81487300