使用树排序修改数组

Using tree sort to modify array

本文关键字:修改 数组 排序      更新时间:2023-10-16

我希望使用树排序来存储数组中排序的数字,而不是仅按排序顺序输出数字。n被初始化为零。

void BinSearchTree::inOrder( TreeNodePtr subRoot, int A[], int n )
{
    if ( subRoot != NULL )             
    {
        inOrder( subRoot->left, A, n );    
        A[n] = subRoot->key;
        n++;
        inOrder( subRoot->right, A, n ); 
    }
}

我相信问题在于我继续调用A作为inOrder的参数,但我不知道我还能怎么做。

您应该有一个对n的引用,否则您不知道下一个要分配的元素是什么,即:

void BinSearchTree::inOrder( TreeNodePtr subRoot, int A[], int& last )
{
    if ( subRoot != NULL )             
    {
        inOrder( subRoot->left, A, n );    
        A[last++] = subRoot->key;
        inOrder( subRoot->right, A, n ); 
    }
}

另一种选择是使用具有push_back函数的容器,如向量:

 void BinSearchTree::inOrder( TreeNodePtr subRoot, std::vector<int>& vec )
    {
        if ( subRoot != NULL )             
        {
            inOrder( subRoot->left, vec );    
            vec.push_back( subRoot->key );
            inOrder( subRoot->right, vec); 
        }
    }