c++ - 递归打印二叉搜索树的内容?

标签 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;
    }
}

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

编辑:: 我的问题是它会导致无限循环,并且无法正确打印树的所有关联子节点

最佳答案

在函数中使用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/

相关文章:

c++ - 如何在c或c++中的消息框(图形矩形)之前存储和检索图形

Android Studio 在 Logcat 中缺少异常堆栈跟踪

javascript - 查看大数组的内容?

javascript - 递归地深度扁平化 JavaScript 对象

c++ - 用于基准代码运行 K 次的 Unix 命令

c++ - 使用函数操作文件

java - 通过 JNI 将我的 Java API 扩展到 C++ : How to wrap a method returning a String?

android - 调试时应用程序执行速度非常慢(android 9、miui 11)

algorithm - 如何在不修改指针的情况下递归地反转单链表?

Scala - 如果路径相同,则将多个列表合并为一个列表,直到路径发生变化。 (删除列表中重复的子列表)