Detailed Description
intrusive red black tree datastructure
Definition in file rbtree.h.
Go to the source code of this file.
Data Structures | |
struct | SCIP_RBTreeNode |
Typedefs | |
typedef struct SCIP_RBTreeNode | SCIP_RBTREENODE |
Functions | |
SCIP_RBTREENODE * | SCIPrbtreeFirst_call (SCIP_RBTREENODE *root) |
SCIP_RBTREENODE * | SCIPrbtreeLast_call (SCIP_RBTREENODE *root) |
SCIP_RBTREENODE * | SCIPrbtreeSuccessor_call (SCIP_RBTREENODE *x) |
SCIP_RBTREENODE * | SCIPrbtreePredecessor_call (SCIP_RBTREENODE *x) |
void | SCIPrbtreeDelete_call (SCIP_RBTREENODE **root, SCIP_RBTREENODE *node) |
void | SCIPrbtreeInsert_call (SCIP_RBTREENODE **root, SCIP_RBTREENODE *parent, int pos, SCIP_RBTREENODE *node) |
Macro Definition Documentation
◆ SCIP_RBTREE_HOOKS
#define SCIP_RBTREE_HOOKS SCIP_RBTREENODE _rbtreenode |
◆ SCIPrbtreeFirst
#define SCIPrbtreeFirst | ( | root | ) | SCIPrbtreeFirst_call((SCIP_RBTREENODE*)(root)) |
Definition at line 65 of file rbtree.h.
Referenced by SCIPrbtreeDelete_call().
◆ SCIPrbtreeLast
#define SCIPrbtreeLast | ( | root | ) | SCIPrbtreeLast_call((SCIP_RBTREENODE*)(root)) |
◆ SCIPrbtreeSuccessor
#define SCIPrbtreeSuccessor | ( | x | ) | SCIPrbtreeSuccessor_call((SCIP_RBTREENODE*)(x)) |
◆ SCIPrbtreePredecessor
#define SCIPrbtreePredecessor | ( | x | ) | SCIPrbtreePredecessor_call((SCIP_RBTREENODE*)(x)) |
◆ SCIPrbtreeDelete
#define SCIPrbtreeDelete | ( | root, | |
node | |||
) | SCIPrbtreeDelete_call((SCIP_RBTREENODE**)(root), (SCIP_RBTREENODE*)(node)) |
Definition at line 69 of file rbtree.h.
Referenced by unlinkChunk().
◆ SCIPrbtreeInsert
#define SCIPrbtreeInsert | ( | r, | |
p, | |||
c, | |||
n | |||
) | SCIPrbtreeInsert_call((SCIP_RBTREENODE**)(r), (SCIP_RBTREENODE*)(p), (c), (SCIP_RBTREENODE*)(n) ) |
Definition at line 70 of file rbtree.h.
Referenced by linkChunk().
◆ SCIPrbtreeFindInt
#define SCIPrbtreeFindInt | ( | r, | |
k, | |||
n | |||
) | SCIPrbtreeFindInt_call((SCIP_RBTREENODE*)(r),(k),(SCIP_RBTREENODE**)(n)) |
◆ SCIPrbtreeFindReal
#define SCIPrbtreeFindReal | ( | r, | |
k, | |||
n | |||
) | SCIPrbtreeFindReal_call((SCIP_RBTREENODE*)(r),(k),(SCIP_RBTREENODE**)(n)) |
◆ SCIPrbtreeFindPtr
#define SCIPrbtreeFindPtr | ( | c, | |
r, | |||
k, | |||
n | |||
) | SCIPrbtreeFindPtr_call((c),(SCIP_RBTREENODE*)(r),(void*)(k),(SCIP_RBTREENODE**)(n)) |
◆ SCIPrbtreeFindElem
#define SCIPrbtreeFindElem | ( | c, | |
r, | |||
k, | |||
n | |||
) | SCIPrbtreeFindElem_call((c),(SCIP_RBTREENODE*)(r),(SCIP_RBTREENODE*)(k),(SCIP_RBTREENODE**)(n)) |
◆ FOR_EACH_NODE
#define FOR_EACH_NODE | ( | type, | |
n, | |||
r, | |||
body | |||
) |
Definition at line 77 of file rbtree.h.
Referenced by BMScheckEmptyBlockMemory_call(), BMSdisplayBlockMemory_call(), clearChkmem(), and isPtrInChkmem().
◆ SCIP_DEF_RBTREE_FIND
#define SCIP_DEF_RBTREE_FIND | ( | NAME, | |
KEYTYPE, | |||
NODETYPE, | |||
LT, | |||
GT | |||
) |
Typedef Documentation
◆ SCIP_RBTREENODE
typedef struct SCIP_RBTreeNode SCIP_RBTREENODE |
Function Documentation
◆ SCIPrbtreeFirst_call()
SCIP_RBTREENODE* SCIPrbtreeFirst_call | ( | SCIP_RBTREENODE * | root | ) |
get first element in tree with respect to sorting key
- Parameters
-
root root of the tree
Definition at line 227 of file rbtree.c.
References SCIP_RBTreeNode::child, LEFT, and NULL.
Referenced by SCIPrbtreeSuccessor_call().
◆ SCIPrbtreeLast_call()
SCIP_RBTREENODE* SCIPrbtreeLast_call | ( | SCIP_RBTREENODE * | root | ) |
get last element in tree with respect to sorting key
- Parameters
-
root root of the tree
Definition at line 241 of file rbtree.c.
References SCIP_RBTreeNode::child, NULL, and RIGHT.
Referenced by SCIPrbtreePredecessor_call().
◆ SCIPrbtreeSuccessor_call()
SCIP_RBTREENODE* SCIPrbtreeSuccessor_call | ( | SCIP_RBTREENODE * | x | ) |
get successor of given element in the tree
- Parameters
-
x element to get successor for
Definition at line 255 of file rbtree.c.
References SCIP_RBTreeNode::child, NULL, PARENT, RIGHT, SCIPrbtreeFirst_call(), and y.
◆ SCIPrbtreePredecessor_call()
SCIP_RBTREENODE* SCIPrbtreePredecessor_call | ( | SCIP_RBTREENODE * | x | ) |
get predecessor of given element in the tree
- Parameters
-
x element to get predecessor for
Definition at line 275 of file rbtree.c.
References SCIP_RBTreeNode::child, LEFT, NULL, PARENT, SCIPrbtreeLast_call(), and y.
◆ SCIPrbtreeDelete_call()
void SCIPrbtreeDelete_call | ( | SCIP_RBTREENODE ** | root, |
SCIP_RBTREENODE * | node | ||
) |
delete the given node from the tree given by it's root node. The node must be contained in the tree rooted at root.
- Parameters
-
root root of the tree node node to delete from tree
Definition at line 297 of file rbtree.c.
References BLACK, SCIP_RBTreeNode::child, COLOR, LEFT, NULL, PARENT, SCIP_RBTreeNode::parent, rbDeleteFixup(), rbTransplant(), RIGHT, SCIPrbtreeFirst, SET_COLOR, SET_PARENT, x, and y.
◆ SCIPrbtreeInsert_call()
void SCIPrbtreeInsert_call | ( | SCIP_RBTREENODE ** | root, |
SCIP_RBTREENODE * | parent, | ||
int | pos, | ||
SCIP_RBTREENODE * | node | ||
) |
insert node into the tree given by it's root. Requires the future parent and the position of the parent as returned by the tree's find function defined using the SCIP_DEF_RBTREE_FIND macro.
- Parameters
-
root root of the tree parent future parent of node to be inserted pos position of parent with respect to node, i.e. -1 if the parent's key comes before node and 1 if the parent's key comes after the node node node to insert into the tree
Definition at line 352 of file rbtree.c.
References SCIP_RBTreeNode::child, LEFT, NULL, SCIP_RBTreeNode::parent, rbInsertFixup(), RED, and RIGHT.