以递归方式打印二进制搜索树的内容?

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)

我不确定这个函数是否导致了我的问题,或者它是否是我的添加函数,但我觉得这个逻辑是正确的.我错过了什么吗?

编辑::我的问题是,它导致无限循环,并且它没有正确打印树的所有相关子项

R S*_*ahu 6

使用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)