# Tree

One of the very powerful family type of data structures is [**Tree**](https://en.wikipedia.org/wiki/Tree_\(data_structure\)). A tree is a hierarchical data structure, with a root value and subtrees of children with a parent node, represented as a set of linked nodes. A tree data structure can also be defined recursively as a collection of nodes (starting at a root node), where each node is a data structure consisting of a value, together with a list of references to nodes (the *children*), with the constraints that no reference is duplicated, and none points to the root.

Some other data structures which may not exactly be a **tree** but can be considered to belong to the **tree-family** will be briefly presented in this note including:

* **Heap**
* **Trie**
* **Disjoint Set Union**
* **Binary search tree**
* **Red-Black tree**
