<分区>
假设您有这个二叉搜索树 (BST)。请参阅下面的代码。属性:
节点的左子树只包含键小于节点键的节点。
节点的右子树仅包含键大于节点键的节点。
左子树和右子树也必须是二叉搜索树。
您将如何对其进行单元测试?您无法访问节点,也无法验证结构。您不能单独测试 Insert 函数。
1) 您可以从 BST 创建一个继承的测试类,并声明额外的方法来进行测试。这常见吗?
2) 以不同的方式实现 BST。有一个树类。此类可以访问子节点等并实现基本的树功能。从 Tree 继承 BST。借助Tree提供的方法测试BST。
3) 你的意见?
谢谢。
template <typename ValueType>
class BinarySearchTree
{
public:
BinarySearchTree() : m_count(0), m_root(nullptr) {}
void Insert(const ValueType& elementToInsert);
bool Remove(const ValueType& elementToRemove);
bool Contains(const ValueType& elementToFind);
bool IsEmpty() const;
size_t Count() const;
ValueType Max() const;
ValueType Min() const;
int Delimiter() const;
void PrintToFile(std::ofstream& outFile);
void BuildFromFile(std::ifstream& inFile);
~BinarySearchTree() { delete m_root; }
// TODO: copy ctr, copy assignment operator, move ctr
private:
struct Node
{
Node(const ValueType& value) : value(value), parent(nullptr), left(nullptr), right(nullptr) {}
~Node() { delete left; delete right; }
// TODO: copy ctr, copy assignment operator, move ctr
ValueType value;
Node* parent;
Node* left;
Node* right;
};
Node* m_root;
int m_count;
};