red_black_tree file structure

In order to under stand  red_blakc_tree, you should first think about
how to keep tree balanced by yourself. So if you cannot figure out,
others have come out some ideas: these ideas are the properties of
red_black_tree.

so you should always ensure these properties not be violated.
(five properties)

1. root is black.

2. node is either black or red

3. red node only can has black children

4. nil node is regarded as black node

5. from a node, the two path should have same amount of black nodes

from the five properties, we can come to these conclusions:

   * no adjacent red node.(because red node’s child must be black)
   * because the black nodes in two path must be equal, so the longest path is twice the length of the shortest
   * in order to protect the number of black node from being changed, so the new node should be red