【问题标题】:the following print tree function does not work why?下面的打印树功能为什么不起作用?
【发布时间】:2018-04-30 19:37:12
【问题描述】:

我的打印功能的代码是-

void print(node* root){
    cout<<root->data<<" ";
    print(root->left);
    print(root->right);
    return;
}

其中使用的节点结构是:-

struct node
{
int data;
node* left;
node* right;
};

我不知道是什么问题。代码的逻辑有问题吗?

【问题讨论】:

  • 有几个问题会阻止此代码编译。在 print() 函数中,它应该是 print(struct *node)。在打印节点时,您也(可能)想要打印节点->数据元素。然后你需要一个 main() 函数入口点来实际执行你的代码。
  • 在我们帮助您解决问题之前,您必须告诉我们问题所在。代码不能编译吗?是否无法运行?是否开始运行,但崩溃?是否显示任何错误消息?你在调试器下运行过吗?如果您不知道如何使用调试器,那么现在是学习的时候了。只是删除一些代码并说“它不起作用”并不能让我们轻松地为您提供帮助。

标签: c++ data-structures tree c++14 binary-tree


【解决方案1】:

您的递归函数非常接近工作,但它缺少基本情况,即当rootnullptr 时,它不会告诉编译器要做什么。当rootnullptr 时添加退出指令将解决问题:

void print(node* root) {
    if (!root) return;
    ... // The remaining code should remain the same
}

注意:void 函数底部的 return 语句没有特殊用途,应该删除。

【讨论】:

  • 哦,是的,非常感谢,我完全忘记了这么愚蠢的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-09
  • 2015-07-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多