我有一个在控制台中显示BST树的功能,它适用于小树:
void BST::display(node *ptr, int level)
{
int i;
if (ptr != NULL)
{
display(ptr->right, level+1);
cout<<endl;
if (ptr == root)
cout<<"Root->: ";
else
{
for (i = 0;i < level;i++)
cout<<" ";
}
cout<<ptr->info;
display(ptr->left, level+1);
}
}
但是当树变得越来越大时,BST没有显示属性 - 可能因为我在控制台中只有80位宽度 - 所以我必须在txt文件中显示它 - 所以我很少重建我的功能到这样的东西 - 但我不知道为什么它不起作用:
void BST::display(node *ptr, int level)
{
int i;
std::fstream file_bst( "bst.txt", std::ios::out | ios::trunc );
if (ptr != NULL)
{
display(ptr->right, level+1);
file_bst<<"\n";
if (ptr == root)
file_bst<<"Root->: ";
else
{
for (i = 0;i < level;i++)
file_bst<<" ";
}
file_bst<<ptr->data;
display(ptr->left, level+1);
}
file_bst.close();
}
答案 0 :(得分:0)
我只是通过移动来解决问题:
std::fstream file_bst( "bst.txt", std::ios::out);
上面
void BST::display(node *ptr, int level)