【发布时间】:2017-07-09 14:57:23
【问题描述】:
我正在尝试创建一个使用 BST 将其值存储在数组中的函数。我有一个全局变量 index = -1;动态创建的数组,大小为 BST。
int index = -1;
struct treeNode{
int value;
treeNode *left;
treeNode *right;
}
void treeTraversal(treeNode *node, int array[], int index){
index++;
if (node != nullptr){
array[index] = node->value;
treeTraversal(node->left, array, index);
treeTraversal(node->right, array, index);
}
}
它适用于一些具有这样结构的树
6
5
4
但它不适用于这样的结构
3
2 4
5
【问题讨论】:
-
您是如何将值存储到树结构中的?
-
我没有这是一个作业和我没有创建的代码的 int 主要部分
-
我建议使用调试器单步调试您的代码,并观察
index参数的变化。检查这是否符合您的期望。 -
我一直在检查代码并使用不同的测试用例对其进行测试,但是每当我更改某些内容时,另一个测试用例将起作用而另一个测试用例将失败
-
您正在尝试通过反复试验来编写代码;这种方法有效,但速度极慢。您必须了解这些代码行的作用,然后才能希望它们正常工作。此外,您发布的代码不适用于第一棵树。 我强烈建议你在尝试这个之前先回去掌握更简单的练习。我建议编写可以复制数组的代码,然后编写可以遍历树打印值但不存储它们的代码,然后遍历并用计数器打印,然后这个任务。
标签: c++ arrays binary-tree binary-search-tree