#include"RedBlackTree.h"
using namespace std;
int main()
{
const int NEG_INF=-99999;//创建时候造的伪根
RedBlackTree<int> t(NEG_INF);
cout<<"OK!"<<endl;
system("pause");
return 0;
}
#ifndef _REDBLACKTREE_H
#define _REDBLACKTREE_H
template<class Comparable>
class RedBlackTree;
template<class Comparable>
class RedBlackNode;
template<class Comparable>
class RedBlackTree
{
public:
RedBlackTree(const Comparable &negInf);
enum {Red,Black};
typedef RedBlackNode<Comparable> Node;
~RedBlackTree();
private:
Node *header;
Node *nullNode;
};
template<class Comparable>
class RedBlackNode
{
Comparable element;
RedBlackNode *left;
RedBlackNode *right;
int color;
RedBlackNode(const Comparable & theElement=Comparable(),
RedBlackNode *lt=NULL,RedBlackNode *rt=NULL,
int c=RedBlackTree<Comparable>::Black)
:element(theElement,left(lt),right(rt),color(c)){}
friend class RedBlackTree<Comparable>;
};
template<class Comparable>
RedBlackTree<Comparable>::RedBlackTree(const Comparable &negInf)
{
nullNode=new Node();
nullNode->left=nullNode->right=nullNode;
header=new Node(negInf);
header->left=header->right=nullNode;
}
template<class Comparable>
RedBlackTree<Comparable>::~RedBlackTree()
{
delete nullNode;
delete header;
}
#endif