C ++类扩展麻烦

时间:2015-08-23 15:20:15

标签: c++ class templates inheritance

我正在学习C ++并且这样做,我实现了一些常见的数据结构。

我开始实现二进制搜索树,它很好,所以现在我实现了一个红黑树,因为我想通过将BST节点扩展到RBT节点(只需添加一个bool颜色) ),这是我的问题来了。

这是我的节点定义:

// NODE (key, value) //
class Node {

public:
    int key;
    int value; // value is integer for simplicity
    Node *parent;
    Node *left;
    Node *right;

    Node();
    Node(int key, int value);

    Node *grandparent();
    Node *uncle();

};

然后我有了我的RedBlackNode:

// RED BLACK NODE (node with color) //
class RedBlackNode : public Node {

public:
    int key;
    int value;

    RedBlackNode *parent;
    RedBlackNode *left;
    RedBlackNode *right;

    bool color;

    RedBlackNode();
    RedBlackNode(int key, int value);

    RedBlackNode *grandparent();
    RedBlackNode *uncle();

};

除了颜色之外,它看起来完全相同,因为grandparent()和uncle()返回RedBlackNode而不是Node。

我的BinarySearchTree方法插入(键,值)和搜索(键)也是如此,我想知道是否必须重写所有方法只是因为这个。

我一直在考虑使用模板,但这对我没有意义,因为BST只会由节点组成,而RBT将由彩色节点组成。

感谢您的提前时间。

0 个答案:

没有答案