【问题标题】:binary tree inorder traversal in C++C++中的二叉树中序遍历
【发布时间】:2018-10-08 10:27:13
【问题描述】:

我正在尝试打印出我使用中序遍历构建的二叉树,但在定义如何将值传递给递归函数时遇到了麻烦。这是我得到的错误:

1>methods.obj:错误 LNK2001:无法解析的外部符号“公共: void __thiscall morsecode::in_order(struct letter *)" (?in_order@morsecode@@QAEXPAUletter@@@Z)

这是我的头文件中的树:

struct letter
{
    string let;
    string morse;
    letter *left;
    letter *right;
};

源文件中的方法:

void in_order(struct letter *P)
    {
        if(P==NULL) return;
        in_order(P->left);
        cout<<"letter: "<<P->let<<endl;
        in_order(P->right);
    }

我在这里遗漏了什么重要的东西吗?

【问题讨论】:

  • 你有这个文件顶部的函数原型吗?结构的定义在函数的定义之下吗?如果是这样,请切换顺序,或在文件顶部添加原型。您的编译会对其进行一次传递,因此如果结构的定义不高于函数的定义,那么解析器将不知道“结构字母”是什么。
  • 定义在 .h 文件中,我使用的方法在 .cpp 文件中。除非我实际调用该函数,否则我在运行它时不会收到任何错误。我应该向函数传递一个指针,对吗?我已经声明 typedef letter* ptr;在标题中,我将它传递给 ptr P.
  • 那么下面的响应可能是您的解决方案。看看 perreal 怎么说。

标签: c++ binary-tree binary-search-tree


【解决方案1】:

也许你需要:

void morsecode::in_order(struct letter *P) {
     if(P==NULL) return;
     in_order(P->left);
     cout<<"letter: "<<P->let<<endl;
     in_order(P->right);
}

成为morsecode 类的成员。

【讨论】:

  • 哇哦,谢谢!很抱歉因为这么愚蠢的错误浪费了你的时间,我早该发现这一点的。
猜你喜欢
  • 2010-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-09
  • 1970-01-01
相关资源
最近更新 更多