[#BloombergLP-bslalg-RbTreeNode] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslalg.adoc[bslalg]::RbTreeNode :relfileprefix: ../../ :mrdocs: This POD‐like `class` describes a node suitable for use in a red‐black binary search tree, holding the addresses of the parent, left‐child, and right‐child nodes (any of which may be 0), as well as a "color" (red or black). This class is a "POD‐like" to facilitate efficient allocation and use in the context of a container implementation. In order to meet the essential requirements of a POD type, this `class` does not define a constructor or destructor. However its data members are private. Since this class will be aligned to a word boundary, a pointer type will be a multiple of 4. This class use this property to reduce its size by storing the color information in the least significant bit of the parent pointer. Note that this type does not contain any "payload" member data: Clients creating a red‐black binary search tree must define an appropriate node type that incorporates `RbTreeNode` (generally via inheritance), and that holds the "key" value and any associated data. == Synopsis Declared in `<bslalg_rbtreenode.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- class RbTreeNode; ---- == Enums [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslalg/RbTreeNode/Color-048.adoc[`Color`] | Enumeration of the two colors used by red‐black tree nodes. |=== == Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslalg/RbTreeNode/color-049.adoc[`color`] | Return the color of this node. | xref:BloombergLP/bslalg/RbTreeNode/isBlack.adoc[`isBlack`] | Return `true` if this node is black. | xref:BloombergLP/bslalg/RbTreeNode/isRed.adoc[`isRed`] | Return `true` if this node is red. | xref:BloombergLP/bslalg/RbTreeNode/leftChild-01.adoc[`leftChild`] | `leftChild` overloads | xref:BloombergLP/bslalg/RbTreeNode/makeBlack.adoc[`makeBlack`] | Set the color of this node to black. Note that this operation is at least as fast as (and potentially faster than) `setColor`. | xref:BloombergLP/bslalg/RbTreeNode/makeRed.adoc[`makeRed`] | Set the color of this node to red. Note that this operation is at least as fast as (and potentially faster than) `setColor`. | xref:BloombergLP/bslalg/RbTreeNode/parent-0ce.adoc[`parent`] | `parent` overloads | xref:BloombergLP/bslalg/RbTreeNode/reset.adoc[`reset`] | Reset this object to have the specified `parent`, `leftChild`, `rightChild`, and `color` property values. | xref:BloombergLP/bslalg/RbTreeNode/rightChild-06.adoc[`rightChild`] | `rightChild` overloads | xref:BloombergLP/bslalg/RbTreeNode/setColor.adoc[`setColor`] | Set the color of this node to the specified `value`. | xref:BloombergLP/bslalg/RbTreeNode/setLeftChild.adoc[`setLeftChild`] | Set the left child of this node to the specified `address`. If `address` is 0, then this node will not have a left child. | xref:BloombergLP/bslalg/RbTreeNode/setParent.adoc[`setParent`] | Set the parent of this node to the specified `address`. If `address` is 0, then this node will have not have a parent node (i.e., it will be the root node). The behavior is undefined unless `address` is aligned to at least two bytes. | xref:BloombergLP/bslalg/RbTreeNode/setRightChild.adoc[`setRightChild`] | Set the right child of this node to the specified `address`. If `address` is 0, then this node will not have a right child. | xref:BloombergLP/bslalg/RbTreeNode/toggleColor.adoc[`toggleColor`] | Set the color of this node to the alternative color. If this node's color is red, set it to black, and set it to red otherwise. Note that this operation is at least as fast as (and potentially faster than) `setColor`. |=== == Derived Classes [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslstl/TreeNode.adoc[`TreeNode`] | This POD‐like `class` describes a node suitable for use in a red‐black binary search tree of values of the parameterized `VALUE`. This class is a "POD‐like" to facilitate efficient allocation and use in the context of a container implementation. In order to meet the essential requirements of a POD type, this `class` does not define a constructor or destructor. The manipulator, `value`, returns a modifiable reference to `d_value` so that it may be constructed in‐place by the appropriate `bsl::allocator_traits` object. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#