2010-10-22 21 views
0

J'ai l'algorithme pour void leveltraversal(ostream& out); mais je ne suis pas sûr comment l'appeler dans main(). Dans mon affectation, nous ne sommes pas autorisés à modifier le fichier d'en-tête. Y at-il un moyen de l'appeler sans le surcharger?Binary Search Tree- fonction breadthFirst Appelez

Update:

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(); 
} 
} 
+0

Est-ce une fonction libre ou fonction membre d'une classe? (Je m'attends à ce dernier cependant.) – Arun

+0

C'est un membre d'une classe de BST – Steven

+0

permettez-moi d'essayer ceci et de mal revenir à vous. – Steven

Répondre

1

Le paramètre, ostream&, prend tout output stream, par exemple fichier de sortie. L'exemple suivant utilise la sortie standard comme ostream:

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

@Steven: J'ai mis à jour la réponse et fourni un lien pour 'ostream'. – Arun

0

Si vous ne pouvez pas changer l'en-tête de la fonction, vous pouvez définir des variables globales et les référencer dans les deux fonctions (main et leveltraversal).

+0

Je ne comprends pas comment l'imprimer, – Steven

+0

-1, car vous ne devriez jamais utiliser une forme d'état global comme paramètre d'entrée de fonction cachée. Ce type de paramètre est * très * susceptible de créer de la douleur lors de futurs changements de code. – Rudi

0

ce que j'ai

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(); 
} 
} 
+0

Ce n'est pas une réponse - il pourrait être plus approprié de "modifier" votre question, et ajouter ce truc là-bas. Ensuite, vous pouvez supprimer cette réponse, y compris ce commentaire. – Arun

+0

Comment puis-je formater le code correctement dans le commentaire? – Steven

+0

Okay - J'ai édité la question pour vous et ajouté la définition de la méthode. Vous pouvez supprimer cette réponse maintenant. – Arun