C++ 二进制搜索树-宽度第一个函数调用

C++ 二进制搜索树-宽度第一个函数调用,c++,binary-tree,tree-traversal,C++,Binary Tree,Tree Traversal,我有void-leveltraversal(ostream&out)的算法 但我不知道如何在main()中调用它。在我的作业中,我们不允许更改头文件。有没有一种方法可以在不重载的情况下调用它 更新: void BST::levelTraversal(ostream& out){ queue<BST::BinNode*> q; BinNode* cur = myRoot; BinNode* top = NULL; q.push(cur); while(q.empty(

我有
void-leveltraversal(ostream&out)的算法
但我不知道如何在main()中调用它。在我的作业中,我们不允许更改头文件。有没有一种方法可以在不重载的情况下调用它

更新:

void BST::levelTraversal(ostream& out){
 queue<BST::BinNode*> q;
 BinNode* cur = myRoot;
 BinNode* top = NULL;
 q.push(cur);
 while(q.empty() != false){
  top = q.front();
  if(top->left != NULL){
   q.push(top->left);
  }
  if(top->right !=NULL){
   q.push(top->right);
  }
  out<<top->data;
  q.pop();
 }
}
void BST::levelTraversal(ostream&out){
队列q;
BinNode*cur=myRoot;
BinNode*top=NULL;
q、 推(cur);
while(q.empty()!=false){
顶部=q.前部();
如果(顶部->左侧!=NULL){
q、 推动(顶部->左侧);
}
如果(顶部->右侧!=NULL){
q、 推动(顶部->右侧);
}

out参数
ostream&
接受任何输出文件。以下示例将标准输出用作
ostream

BST myBst;
// insert elements into myBst
myBst.leveltraversal( std::cout );

如果不能更改函数头,可以定义全局变量并在两个函数中引用它们(
main
leveltraversal
)。

这就是我的

void BST::levelTraversal(ostream& out){
 queue<BST::BinNode*> q;
 BinNode* cur = myRoot;
 BinNode* top = NULL;
 q.push(cur);
 while(q.empty() != false){
  top = q.front();
  if(top->left != NULL){
   q.push(top->left);
  }
  if(top->right !=NULL){
   q.push(top->right);
  }
  out<<top->data;
  q.pop();
 }
}
void BST::levelTraversal(ostream&out){
队列q;
BinNode*cur=myRoot;
BinNode*top=NULL;
q、 推(cur);
while(q.empty()!=false){
顶部=q.前部();
如果(顶部->左侧!=NULL){
q、 推动(顶部->左侧);
}
如果(顶部->右侧!=NULL){
q、 推动(顶部->右侧);
}

它是一个自由函数,还是某个类的成员函数它是一个BST类的成员。让我试试这个,我会给你回复。我不知道如何打印它,-1,因为你永远不应该使用任何形式的全局状态作为隐藏函数输入参数。这种参数很可能会在将来的代码更改中造成痛苦。@Steven:我更新了答案,并提供了一个
ostream。这不是答案——它可能更适合“编辑”你的问题,然后在那里添加这些内容。然后,你可以删除这个答案,包括这个评论。好的-我为你编辑了这个问题并添加了方法定义。你现在可以删除这个答案。不要给我删除的选项嗯,好的,没关系。让我们回到正题。看看答案,看看它们是否对你有帮助;如果没有,请提及为什么不呢?