[#BloombergLP-bslalg-RbTreeUtil_Validator-validateRbTree]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslalg.adoc[bslalg]::xref:BloombergLP/bslalg/RbTreeUtil_Validator.adoc[RbTreeUtil&lowbar;Validator]::validateRbTree
:relfileprefix: ../../../
:mrdocs:

Return the (common) number of black nodes on each path from the specified `rootNode` to a leaf in the tree, 0 if `rootNode` is 0, and a negative number if `rootNode` does not refer to a valid red&hyphen;black binary search tree (ordered according to the specified `comparator`) that contains no nodes whose value is less than the specified `minNodeValue` (if not 0) or greater&hyphen;than the specified `maxNodeValue` (if not 0)&period; If `rootNode` does not refer to a valid red&hyphen;black tree containing nodes whose values are between the specified `minNodeValue` and `maxNodeValue` (inclusively) then load `errorNode` and `errorDescription` with the address of a node violating a red&hyphen;black tree constraint and a description of that violation, respectively&period; The behavior is undefined unless `rootNode` is 0, or refers to a valid binary tree&period;

== Synopsis

Declared in `&lt;bslalg&lowbar;rbtreeutil&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;class NODE&lowbar;COMPARATOR&gt;
static
int
validateRbTree(
    xref:BloombergLP/bslalg/RbTreeNode.adoc[RbTreeNode] const** errorNode,
    char const** errorDescription,
    xref:BloombergLP/bslalg/RbTreeNode.adoc[RbTreeNode] const* rootNode,
    xref:BloombergLP/bslalg/RbTreeNode.adoc[RbTreeNode] const* minNodeValue,
    xref:BloombergLP/bslalg/RbTreeNode.adoc[RbTreeNode] const* maxNodeValue,
    NODE&lowbar;COMPARATOR const& comparator);
----


[.small]#Created with https://www.mrdocs.com[MrDocs]#
