按顺序将树转换为数组

Convert Tree To Array by Inorder

我想按顺序将 AVL 树转换为数组,然后 return 通过函数 GetArray 将其转换,由于某些原因,代码无法正常工作。它只存储第一个数据。

void InsertInArray(Node<T>* node,int int index,T** array)
    {   if(node==NULL)
            return;
    InsertInArray(node->LeftSon,index,array);
        array[index++]=node->data;
    InsertInArray(node->RightSon,index,array);
    }

  T** GetArray ()
    {
        T** array=new T*[this->size];
         InsertInArray(this->head,0,array);
         return array;
    }

//数据类型为T*

更新:以下代码也有效!

您的代码在单个元素 array[i] 上以第 i 深度保存每个数据,因此失败。 我们必须始终将每个数据推回到 array 作为最后一个元素。

最简单的方法是使用 std::vector::push_back。 虽然我不知道你项目的全部代码,但我希望下面的代码对你有用:

#include <vector>

void InsertInArray(Node<T>* node, std::vector<T>& array)
{
    if(node==NULL){
        return;
    }

    InsertInArray(node->LeftSon, array);
    array.push_back(node->data);
    InsertInArray(node->RightSon, array);
}

std::vector<T> GetArray()
{
    std::vector<T> array;
    InsertInArray(this->head, array);

    return array;
}