我必须从文件中读取数据并从中构造一个二进制搜索树 值按读取顺序排列。从而;读取的第一个数字将是树的根。我必须尝试将数字存储在数组中。 当我将最后一个值读入BST后,我需要进行有序遍历,以升序输出前10个值,并将它们打印10个到5个字符宽的行中。 。
我的输出很好,并且以升序打印所有整数,但是我想在一行中打印10个整数。我被困在这里。有人可以帮我解决这个问题吗?
我的代码:
struct Node
{
int key;
Node *left, *right;
};
int NumNodes = 0;
const int SIZE = 100;
Node data[SIZE];
Node* nNode(int value)
{
Node* temp = &data[NumNodes++];
temp->key = value;
temp->left = temp->right = NULL;
return temp;
}
void inorder(Node *root)
{
if (root != NULL)
{
inorder(root->left);
cout << root->key << setw(5) ;
inorder(root->right);
}
Node* insert(Node* node, int key)
{
if (node == NULL)
{
return nNode(key);
}
if (key < node->key)
{
node->left = insert(node->left, key);
}
else if (key > node->key)
{
node->right = insert(node->right, key);
}
return node;
}
int main()
{
int c,val,i=0;
string fileName;
Node *root = NULL;
ifstream infile;
cout << "Please enter the name of the file to open :";
cin >> fileName; // asks user to input filename
infile.open(fileName.c_str()); // opens file
if(!infile)
{
cerr << "An eror occurred while openieng the file.";
exit(1);
}
while(!infile.eof()){
infile >> val;
data[i].key = val;
c=data[i].key;
root = insert(root, c);
i++;
}
infile.close();
inorder(root);
return 0;
}
答案 0 :(得分:0)
void inorder(Node *root)
{
static int n=0;
if (root != NULL)
{
inorder(root->left);
cout << setw(5) << root->key;
if(n%10==9)cout << endl;
n++;
inorder(root->right);
}
}