C二叉树排序-扩展它 [英] C binary tree sort - extending it

查看:131
本文介绍了C二叉树排序-扩展它的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要C语言方面的帮助

I need some help in C

帮我扩展对C的二叉树排序.我需要在 sort 函数中返回一个排序后的数组.

Help me to extend the binary tree sort on C. I need to return a sorted array in sort function.

在这里:

#include <stdio.h>
#include <stdlib.h>

struct btreenode
{
    struct btreenode *leftchild ;
    int data ;
    struct btreenode *rightchild ;
} ;

void insert ( struct btreenode **, int ) ;
void inorder ( struct btreenode * ) ;


int* sort(int *array, int arr_size)
{
    struct btreenode *bt ;
    int i;
    bt = NULL;

    for ( i = 0 ; i <= 9 ; i++ )
        insert ( &bt, array[i] ) ;

    inorder ( bt ) ;


    //return ordered array
    return array;
}

void insert ( struct btreenode **sr, int num )
{
    if ( *sr == NULL )
    {
        *sr = malloc ( sizeof ( struct btreenode ) ) ;

        ( *sr ) -> leftchild = NULL ;
        ( *sr ) -> data = num ;
        ( *sr ) -> rightchild = NULL ;
    }
    else
    {
        if ( num < ( *sr ) -> data )
            insert ( &( ( *sr ) -> leftchild ), num ) ;
        else
            insert ( &( ( *sr ) -> rightchild ), num ) ;
    }
}

void inorder ( struct btreenode *sr )
{
    if ( sr != NULL )
    {
        inorder ( sr -> leftchild ) ;
        //printf ( "%d\t", sr -> data ) ;
        inorder ( sr -> rightchild ) ;
    }
}

inorder 函数中排序的数组中的

可以像sr->数据一样打印. 非常感谢.

in inorder function sorted array can be printed like sr -> data. thank a lot.

推荐答案

要进行修改的示例

void inorder ( struct btreenode *, int ** ) ;

int* sort(int *array, int arr_size)
{
    struct btreenode *bt = NULL;
    int i, *p = array;

    for ( i = 0 ; i < arr_size ; i++ )
        insert ( &bt, array[i] ) ;

    inorder ( bt, &p) ;
    //deallocate tree
    return array;
}
void inorder ( struct btreenode *sr, int **array)
{
    if ( sr != NULL )
    {
        inorder ( sr -> leftchild, array) ;
        **array = sr -> data ;
        ++*array;
        inorder ( sr -> rightchild, array) ;
    }
}

这篇关于C二叉树排序-扩展它的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆