【发布时间】:2020-09-03 08:51:32
【问题描述】:
我有一个像这样的有序遍历函数
void Inorder(node *root)
{
node* array;
array = new node[arraySize];
if (root == NULL)
return;
Inorder(root->left); //visit left sub-tree
std::cout << "Word: " << root->key << std::endl
<< "Occurance: " << root->count << std::endl; //print root key and its count
Inorder(root->right); //visit right sub-tree
}
为了进一步对其进行排序,我需要将节点横向存储在一个数组中,但是我不确定我是否能做到这一点。视觉上我想要这样的东西
node array[0] = transversedNode;
我尝试将 root 添加到数组中 当 Inorder 是节点类型时,我尝试将 Inorder(root->left) 添加到数组中
但是这些都不能满足我的需要。是否可以将横向节点存储到数组中?谢谢你
【问题讨论】:
-
您可以使用
std::vector和 push_back 元素,就像打印它们一样。您可以通过引用将此向量作为第二个参数传递,并沿递归传递。 -
您需要有带数组的单个变量,或者更好的向量,才能将元素放入其中。这可以通过多种方式实现:将其作为函数参数,如果这是类中的函数,则作为类成员,作为静态变量。
-
@Unlikus 向量类型是什么?因为 key 是 string 而 count 是 int
-
@DickChang 向量类型应该是
std::vector<Node*>。