【发布时间】:2014-12-17 06:21:21
【问题描述】:
我试图将一堆整数读入一个数组,然后使用一个函数将该数组作为逐个元素的输入并创建一个二叉搜索树。 bst 采用数组的形式,在 (2n+1) 数组点具有较小的元素,在 2n+2 数组点具有较大的元素。我想我大部分都在工作,但由于某种原因,我的函数中的循环不起作用。有什么解决办法??我想我只是什么都没看到。
代码::
#include <iostream>
#include <fstream>
using namespace std;
void sortArray(int arr[], int size)
{
int bst[50];
bst[0] = arr[0];
for(int b = 1; b < size - 1; b++)
{
int c = 0;
do{
if(arr[b] < bst[c])
{
c = ((2 * c) + 1);
}
if(arr[b] > bst[c])
{
c = ((2 * c) + 2);
}
}while(bst[c] != 0);
bst[c] = arr[b];
}
for(int p = 0; p < 25; p++){
cout << bst[p];
}
}
int main(int argc, char** argv) {
int myArray[50];
int i = 0;
ifstream myfile ("tree_nodes.txt");
if (myfile.is_open())
{
while (! myfile.eof() )
{
myfile >> myArray[i];
i++;
}
myfile.close();
}
else cout << "Unable to open file";
for(int p = 0; p < (i); p++){
cout << myArray[p];
}
sortArray(myArray,i);
return 0;
}
【问题讨论】:
标签: c++ arrays io binary-search-tree