gpt4 book ai didi

c++ - 按顺序将树转换为数组

转载 作者:行者123 更新时间:2023-11-30 04:54:08 26 4
gpt4 key购买 nike

我想按顺序将 AVL 树转换为数组,然后通过函数 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;
}

关于c++ - 按顺序将树转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53683786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com