csRedBlackTree< K > Class Template Reference
[Containers]
A red-black-tree.
More...
#include <csutil/redblacktree.h>
Public Member Functions | |
bool | Contains (const K &key) const |
Check whether a key is in the tree. | |
csRedBlackTree (const csRedBlackTree &other) | |
csRedBlackTree (size_t allocatorBlockSize=4096) | |
Construct a new tree. | |
bool | Delete (const K &key) |
Delete a key. | |
void | DeleteAll () |
Delete all keys. | |
void | Empty () |
Delete all the keys. (Idiomatic alias for DeleteAll().). | |
bool | In (const K &key) const |
Check whether a key is in the tree. | |
const K * | Insert (const K &key) |
Insert a key. | |
bool | IsEmpty () const |
Returns whether this tree has no nodes. | |
template<typename K2> | |
const K & | Find (const K2 &other, const K &fallback) const |
template<typename K2> | |
const K * | Find (const K2 &other) const |
Locate key that is equal to 'other'. | |
template<typename CB> | |
void | TraverseInOrder (CB &callback) const |
Traverse tree. | |
Protected Types | |
enum | NodeColor |
Protected Member Functions | |
void | DeleteFixup (Node *node) |
Fix up the RB tree after a deletion. | |
void | DeleteNode (Node *node) |
Delete a node from the tree. | |
void | InsertFixup (Node *node) |
Fix up the RB tree after an insert. | |
bool | IsBlack (Node *node) const |
Check whether a node is black. Note that 0 nodes are by definition black. | |
bool | IsRed (Node *node) const |
Check whether a node is red. | |
Node * | LocateNode (Node *node, const K &key) const |
Find the node for a key. | |
void | RecursiveCopy (Node *&to, Node *parent, const Node *from) |
Duplicate a subtree. | |
Node * | RecursiveInsert (Node *parent, Node *&node, const K &key) |
Locate the place where a new node needs to be inserted. | |
template<typename CB> | |
void | RecursiveTraverseInOrder (Node *node, CB &callback) const |
Traverse tree. | |
void | RotateLeft (Node *pivot) |
Left-rotate subtree around 'pivot'. | |
void | RotateRight (Node *pivot) |
Right-rotate subtree around 'pivot'. | |
Node * | Successor (Node *node) const |
Return smallest node with a key greater than 'node's. | |
template<typename K2> | |
K & | Find (const K2 &other, K &fallback) |
template<typename K2> | |
K * | Find (const K2 &other) |
Locate key that is equal to 'other'. | |
template<typename K2> | |
K & | RecursiveFind (Node *node, const K2 &other, K &fallback) |
template<typename K2> | |
const K & | RecursiveFind (Node *node, const K2 &other, const K &fallback) const |
template<typename K2> | |
K * | RecursiveFind (Node *node, const K2 &other) |
template<typename K2> | |
const K * | RecursiveFind (Node *node, const K2 &other) const |
Locate key that is equal to 'other'. | |
Protected Attributes | |
csBlockAllocator< Node, csBlockAllocatorAlignPolicy< 2 > > | nodeAlloc |
Node * | root |
Classes | |
struct | Node |
A node in the tree. More... |
Detailed Description
template<typename K>
class csRedBlackTree< K >
A red-black-tree.
- Remarks:
- Does not allow duplicate keys.
Uses csComparator<> for key comparisons.
Only stores keys. If you need a key-value-map, look at csRedBlackTreeMap.
Definition at line 41 of file redblacktree.h.
Constructor & Destructor Documentation
|
Construct a new tree.
Definition at line 433 of file redblacktree.h. |
Member Function Documentation
|
Check whether a key is in the tree.
Definition at line 475 of file redblacktree.h. |
|
Delete a key.
Definition at line 458 of file redblacktree.h. |
|
Delete all keys.
Reimplemented in csRedBlackTreeMap< K, T >. Definition at line 492 of file redblacktree.h. Referenced by csRedBlackTree< csRedBlackTreePayload< K, T > >::Empty(). |
|
Fix up the RB tree after a deletion.
Definition at line 237 of file redblacktree.h. Referenced by csRedBlackTree< csRedBlackTreePayload< K, T > >::DeleteNode(). |
|
Delete a node from the tree.
Definition at line 204 of file redblacktree.h. Referenced by csRedBlackTree< csRedBlackTreePayload< K, T > >::Delete(). |
|
Delete all the keys. (Idiomatic alias for DeleteAll().).
Reimplemented in csRedBlackTreeMap< K, T >. Definition at line 498 of file redblacktree.h. |
|
Locate key that is equal to 'other'.
Definition at line 480 of file redblacktree.h. |
|
Locate key that is equal to 'other'.
Definition at line 401 of file redblacktree.h. |
|
Check whether a key is in the tree.
Definition at line 466 of file redblacktree.h. Referenced by csRedBlackTree< csRedBlackTreePayload< K, T > >::Contains(). |
|
Insert a key.
Definition at line 446 of file redblacktree.h. |
|
Fix up the RB tree after an insert.
Definition at line 143 of file redblacktree.h. Referenced by csRedBlackTree< csRedBlackTreePayload< K, T > >::Insert(). |
|
Check whether a node is black. Note that 0 nodes are by definition black.
Definition at line 137 of file redblacktree.h. Referenced by csRedBlackTree< csRedBlackTreePayload< K, T > >::DeleteFixup(). |
|
Returns whether this tree has no nodes.
Reimplemented in csRedBlackTreeMap< K, T >. Definition at line 500 of file redblacktree.h. |
|
Check whether a node is red.
Definition at line 140 of file redblacktree.h. Referenced by csRedBlackTree< csRedBlackTreePayload< K, T > >::DeleteFixup(), and csRedBlackTree< csRedBlackTreePayload< K, T > >::InsertFixup(). |
|
Find the node for a key.
Definition at line 308 of file redblacktree.h. Referenced by csRedBlackTree< csRedBlackTreePayload< K, T > >::Delete(), csRedBlackTree< csRedBlackTreePayload< K, T > >::In(), and csRedBlackTree< csRedBlackTreePayload< K, T > >::LocateNode(). |
|
Duplicate a subtree.
Definition at line 413 of file redblacktree.h. Referenced by csRedBlackTree< csRedBlackTreePayload< K, T > >::csRedBlackTree(), and csRedBlackTree< csRedBlackTreePayload< K, T > >::RecursiveCopy(). |
|
Locate key that is equal to 'other'.
Definition at line 341 of file redblacktree.h. Referenced by csRedBlackTree< csRedBlackTreePayload< K, T > >::Find(), and csRedBlackTree< csRedBlackTreePayload< K, T > >::RecursiveFind(). |
|
Locate the place where a new node needs to be inserted.
Definition at line 76 of file redblacktree.h. Referenced by csRedBlackTree< csRedBlackTreePayload< K, T > >::Insert(), and csRedBlackTree< csRedBlackTreePayload< K, T > >::RecursiveInsert(). |
|
Traverse tree.
Definition at line 391 of file redblacktree.h. Referenced by csRedBlackTree< csRedBlackTreePayload< K, T > >::RecursiveTraverseInOrder(), and csRedBlackTree< csRedBlackTreePayload< K, T > >::TraverseInOrder(). |
|
Left-rotate subtree around 'pivot'.
Definition at line 99 of file redblacktree.h. Referenced by csRedBlackTree< csRedBlackTreePayload< K, T > >::DeleteFixup(), and csRedBlackTree< csRedBlackTreePayload< K, T > >::InsertFixup(). |
|
Right-rotate subtree around 'pivot'.
Definition at line 118 of file redblacktree.h. Referenced by csRedBlackTree< csRedBlackTreePayload< K, T > >::DeleteFixup(), and csRedBlackTree< csRedBlackTreePayload< K, T > >::InsertFixup(). |
|
Return smallest node with a key greater than 'node's.
Definition at line 321 of file redblacktree.h. Referenced by csRedBlackTree< csRedBlackTreePayload< K, T > >::DeleteNode(). |
|
Traverse tree.
Reimplemented in csRedBlackTreeMap< K, T >. Definition at line 505 of file redblacktree.h. |
The documentation for this class was generated from the following file:
- csutil/redblacktree.h
Generated for Crystal Space by doxygen 1.4.4