我试图根据文本文件中提供的数据构建不完整的二叉树
2
3 8
2 10 0 12
1 8 0 0 4 0
会形成这样的树:
我大致知道我需要做什么,我想:
[2 10 12]
[2 10 12]
),并为通过的任何非零键创建左右子节点。我们将指针放在我们6个长阵列中的那些节点上。我遇到的问题是,我不确定如何在每次调用构建函数时将指针数组存储到更改大小的节点,并且是类变量(对于Tree类)。我是以正确的方式来做这件事的吗?有没有更简单的方法来解决这个问题?
答案 0 :(得分:1)
为什么不使用std :: vector而不是数组?它的行为与数组完全相同,但可以调整大小。
使用示例:
using namespace std;
Node *a = new Node;
vector<Node*> vec;
vec.push_back(a);
答案 1 :(得分:1)
与2D数组array[row][column]
一样,您可以使用2D vector
即。 vector< vector<int> > V
是向量的向量。
在vector< vector<int> > V
中,向量内部表示行,外部向量表示列(for your understanding I just tell)
。
这里2D矢量可以调整大小。没有必要每列大小相等。您可以处理push, pop
,并可以根据内存大小存储数据。
示例:
您可以像这样调整大小:
int num_of_col = 5;
int num_of_row = 9;
double init_value = 3.14;
vector< vector<double> > matrix;
//now we have an empty 2D-matrix of size (0,0). Resizing it with one single command:
matrix.resize( num_of col , vector<double>( num_of_row , init_value ) );
// and we are good to go ...
您可以在这里了解vector