二叉搜索树 - PrintInOrder();.

Binary Search Tree - PrintInOrder();

本文关键字:PrintInOrder 搜索树      更新时间:2023-10-16

在我的BST模板化类中,有一个不带参数的PrintInOrder()函数。

void BST<Type>::printInOrder() const{}

我看到了一些函数,它们都需要一个Node*根作为参数,这是有道理的。

如何使用引用的函数进行递归以按顺序打印所有值?

法典:

/* I don't know if it's gonna help, but this is my class */
struct Node
{
    Type m_data;
    Node *m_left, *m_right;
    Node(const Type& _data) : m_data(_data), m_left(nullptr), m_right(nullptr) {}
};
Node* m_root;
int m_size;
public:
    BST();
    ~BST();
    BST& operator=(const BST& that);
    BST(const BST& that);;
    void insert(const Type& v);
    bool findAndRemove(const Type& v);
    bool find(const Type& v) const;
    void clear();
    void printInOrder() const;
};

只需让 printInOrder 函数调用具有节点指针参数的帮助程序函数即可。

为了限制辅助函数的范围,它可以是例如

  • BST类的私人static成员,或

  • 命名空间
  • 中名为 impldetail 之类的命名空间中的命名空间范围自由函数(私有实现部分的约定(,甚至

  • printInOrder函数内部类中的静态函数。

当然,与其使用递归实现功能,不如只维护显式堆栈并使用迭代解决方案,在这种情况下,您不需要帮助程序函数。

一般建议:通过为宏保留所有大写名称,您可以避免麻烦的无意文本替换,并避免给人以大喊大叫的印象。这是一个常见的C++约定。