C二叉树排序-扩展它 [英] C binary tree sort - extending it
本文介绍了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屋!
查看全文