2 c++ debugging recursion binary-search-tree
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我不确定这个函数是否导致了我的问题,或者它是否是我的添加函数,但我觉得这个逻辑是正确的.我错过了什么吗?
编辑::我的问题是,它导致无限循环,并且它没有正确打印树的所有相关子项
使用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);
}
}
Run Code Online (Sandbox Code Playgroud)