Solution:
Do a preorder traversal and insert elements in vector, While returning from node, remove it from vetcor.
if a leaf is found print all the elements in Vector.
//Public interface
void BSTree::printAllpath()
{
cout<<"\nAll paths from root to leaves::";
vect.clear(); // vect is private vector<Node*> of BSTree class
printAllpath(root);
}
//Actual working, Private member of BSTree class
void BSTree::printAllpath(Node* node)
{
if(node)
{
vect.push_back(node->data);
if(!(node->left) && !(node->right))
{
cout<<'\n';
for(int i=0; i<vect.size(); ++i)
cout<<vect[i]<<'\t';
vect.pop_back();
return;
}
printAllpath(node->left);
printAllpath(node->right);
vect.pop_back();
}
}
No comments:
Post a Comment