二叉搜索树,非递归使用堆栈

时间:2013-04-27 09:44:33

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

我应该知道在一个.h文件中有两个单独的类?

我有一个二元搜索树类,包含所有成员和公共&私人职能。

class BinarySearchTree
{
   struct Node {
      Node* left;
      Node* right;
      int val;
   };
};

并且遵循该代码我想设计一堆指向该二进制搜索树节点的指针。在我的同一个文件中

class stack
{
  Node* array;
  //

};

Visual Studio不显示链接,也不识别Node*。可以在一个.h文件中声明两个单独的类,还是更好地实现嵌套在二叉搜索树类中的堆栈类?

1 个答案:

答案 0 :(得分:1)

您已声明struct名为Node的{​​{1}}嵌套在课程BinarySearchTree中,因此如果您想在班级之外引用struct,那么需要像这样引用它:

class stack
{
  BinarySearchTree::Node* array;
  //

};

这个好的设计是否是一个全新的问题,所以我建议在进行更多询问之前先进一步了解。

编辑

就像你注意到的那样,如果你想在类之外使用它,就必须创建嵌套结构public。这本身并不一定是坏事或错误。你没有公开数据,只是一个声明。

你有两个选择:

  1. 使嵌套结构公开。
  2. 将嵌套结构放在封闭类之外。
  3. 就个人而言,我会选择第一个选项。