void MovieTree::printMovieInventory(MovieNode* node)
{
if(node)
{
while(node->rightChild!=NULL or node->leftChild!=NULL)
{
std::cout<<"Movie:"<<node->title<<" "<<node->quantity<<std::endl;
if(node->rightChild)
{
printMovieInventory(node->rightChild);
}
if(node->leftChild)
{
printMovieInventory(node->leftChild);
}
}
}
else
{
std::cout<<"No movies in list!"<<std::endl;
}
}
我不确定这个函数是否导致了我的问题,或者它是否是我添加的函数,但我觉得这个逻辑似乎是正确的。我错过了什么吗?
编辑:: 我的问题是它会导致无限循环,并且无法正确打印树的所有关联子节点
最佳答案
在函数中使用while
是错误的。它需要是 if
。否则,该函数永远不会跳出 while
循环。
FWIW,该函数可以简化为:
void MovieTree::printMovieInventory(MovieNode* node)
{
if(node)
{
std::cout<<"Movie:"<<node->title<<" "<<node->quantity<<std::endl;
printMovieInventory(node->rightChild);
printMovieInventory(node->leftChild);
}
}
关于c++ - 递归打印二叉搜索树的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39990063/