2017-05-16 40 views
0

我有在控制檯顯示BST樹的功能,它完全適用於小喬木:在txt文件顯示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犯規顯示propertly - propably因爲我有隻有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(); 
} 
+1

你是什麼意思 「不工作」 嗎? – DvoryankinEvgeny

+0

我只有2行輸出,例如: Root->:1116 314 163 1 0 –

+0

我不喜歡你如何打開文件。你有沒有考慮添加一個對'std :: ostream'的引用作爲參數?這樣你就可以對'cout'使用相同的函數,並消除所有的開啓/關閉開銷。 – user4581301

回答

0

我只是解決問題移動:

std::fstream file_bst("bst.txt", std::ios::out); 

上述

void BST::display(node *ptr, int level)