Documentation
# Node name


# Insert
## Root
just change color to black
```mermaid
---
title: Only root
---
flowchart TB
    id1((0))
    style id1 fill:#000,color:#fff
```

## Parent is red
### Uncle is nil
```mermaid
---
title: Same direction
---
flowchart TB
    subgraph situation
    direction TB
    id1((0))
    id2((1))
    id3((nil))
    id4((2))
    id5((nil))
    style id1 fill:#f00,color:#fff
    style id2 fill:#f00,color:#fff
    style id3 fill:#fff,color:#fff
    style id4 fill:#000,color:#fff
    style id5 fill:#fff,color:#fff
    id2 --> id1
    id2 --> id3
    id4 --> id2
    id4 --> id5
    end
    subgraph single [parent single rotation]
    direction TB
    id6((0))
    id7((1))
    id8((2))
    style id6 fill:#f00,color:#fff
    style id7 fill:#f00,color:#fff
    style id8 fill:#000,color:#fff
    id7 --> id6
    id7 --> id8
    end
    subgraph color [color change]
    direction TB
    id9((0))
    id10((1))
    id11((2))
    style id9 fill:#f00,color:#fff
    style id10 fill:#000,color:#fff
    style id11 fill:#f00,color:#fff
    id10 --> id9
    id10 --> id11
    end
    situation --> single
    single --> color
```
```mermaid
---
title: Opposite direction
---
flowchart TB
    subgraph situation
    direction TB
    id1((nil))
    id2((0))
    id3((1))
    id4((2))
    id5((nil))
    style id1 fill:#fff,color:#fff
    style id2 fill:#f00,color:#fff
    style id3 fill:#f00,color:#fff
    style id4 fill:#000,color:#fff
    style id5 fill:#fff,color:#fff
    id2 --> id1
    id2 --> id3
    id4 --> id2
    id4 --> id5
    end
    subgraph single0 [child single rotation]
    direction TB
    id12((0))
    id13((1))
    id14((nil))
    id15((2))
    id16((nil))
    style id12 fill:#f00,color:#fff
    style id13 fill:#f00,color:#fff
    style id14 fill:#fff,color:#fff
    style id15 fill:#000,color:#fff
    style id16 fill:#fff,color:#fff
    id13 --> id12
    id13 --> id14
    id15 --> id13
    id15 --> id16
    end
    situation --> single0
    single0 --> sd[same direction]
```
### Uncle is black
```mermaid
---
title: Uncle is black
---
flowchart TB
    subgraph situation
    direction TB
    id1((0))
    id2((1))
    id3((2))
    id4((3))
    id5((4))
    id6((5))
    id7((6))
    id8((7))
    id9((8))
    style id1 fill:#0f0,color:#fff
    style id2 fill:#f00,color:#fff
    style id3 fill:#0f0,color:#fff
    style id4 fill:#f00,color:#fff
    style id5 fill:#0f0,color:#fff
    style id6 fill:#000,color:#fff
    style id7 fill:#0f0,color:#fff
    style id8 fill:#000,color:#fff
    style id9 fill:#0f0,color:#fff
    id2 --> id1
    id2 --> id3
    id4 --> id2
    id4 --> id5
    id6 --> id4
    id6 --> id8
    id8 --> id7
    id8 --> id9
    end
    subgraph single [parent single rotation]
    direction TB
    id10((0))
    id11((1))
    id12((2))
    id13((3))
    id14((4))
    id15((5))
    id16((6))
    id17((7))
    id18((8))
    style id10 fill:#0f0,color:#fff
    style id11 fill:#f00,color:#fff
    style id12 fill:#0f0,color:#fff
    style id13 fill:#f00,color:#fff
    style id14 fill:#0f0,color:#fff
    style id15 fill:#000,color:#fff
    style id16 fill:#0f0,color:#fff
    style id17 fill:#000,color:#fff
    style id18 fill:#0f0,color:#fff
    id11 --> id10
    id11 --> id12
    id13 --> id11
    id13 --> id15
    id15 --> id14
    id15 --> id17
    id17 --> id16
    id17 --> id18
    end
    subgraph color [color change]
    direction TB
    id19((0))
    id20((1))
    id21((2))
    id22((3))
    id23((4))
    id24((5))
    id25((6))
    id26((7))
    id27((8))
    style id19 fill:#0f0,color:#fff
    style id20 fill:#f00,color:#fff
    style id21 fill:#0f0,color:#fff
    style id22 fill:#000,color:#fff
    style id23 fill:#0f0,color:#fff
    style id24 fill:#f00,color:#fff
    style id25 fill:#0f0,color:#fff
    style id26 fill:#000,color:#fff
    style id27 fill:#0f0,color:#fff
    id20 --> id19
    id20 --> id21
    id22 --> id20
    id22 --> id24
    id24 --> id23
    id24 --> id26
    id26 --> id25
    id26 --> id27
    end
    situation --> single
    single --> color
```
```mermaid
---
title: Opposite direction
---
flowchart TB
    subgraph situation
    direction TB
    id1((0))
    id2((1))
    id3((2))
    id4((3))
    id5((4))
    id6((5))
    id7((6))
    id8((7))
    id9((8))
    style id1 fill:#0f0,color:#fff
    style id2 fill:#f00,color:#fff
    style id3 fill:#0f0,color:#fff
    style id4 fill:#f00,color:#fff
    style id5 fill:#0f0,color:#fff
    style id6 fill:#000,color:#fff
    style id7 fill:#0f0,color:#fff
    style id8 fill:#000,color:#fff
    style id9 fill:#0f0,color:#fff
    id2 --> id1
    id2 --> id4
    id4 --> id3
    id4 --> id5
    id6 --> id2
    id6 --> id8
    id8 --> id7
    id8 --> id9
    end
    subgraph single0 [child single rotation]
    direction TB
    id10((0))
    id11((1))
    id12((2))
    id13((3))
    id14((4))
    id15((5))
    id16((6))
    id17((7))
    id18((8))
    style id10 fill:#0f0,color:#fff
    style id11 fill:#f00,color:#fff
    style id12 fill:#0f0,color:#fff
    style id13 fill:#f00,color:#fff
    style id14 fill:#0f0,color:#fff
    style id15 fill:#000,color:#fff
    style id16 fill:#0f0,color:#fff
    style id17 fill:#000,color:#fff
    style id18 fill:#0f0,color:#fff
    id11 --> id10
    id11 --> id12
    id13 --> id11
    id13 --> id14
    id15 --> id13
    id15 --> id17
    id17 --> id16
    id17 --> id18
    end
    situation --> single0
    single0 --> sd[same direction]
```
### Uncle is red
```mermaid
---
title: Uncle is red
---
flowchart TB
    subgraph situation
    direction TB
    id1((0))
    id2((1))
    id3((2))
    id4((3))
    id5((4))
    id6((5))
    id7((6))
    id8((7))
    id9((8))
    style id1 fill:#0f0,color:#fff
    style id2 fill:#f00,color:#fff
    style id3 fill:#0f0,color:#fff
    style id4 fill:#f00,color:#fff
    style id5 fill:#0f0,color:#fff
    style id6 fill:#000,color:#fff
    style id7 fill:#0f0,color:#fff
    style id8 fill:#f00,color:#fff
    style id9 fill:#0f0,color:#fff
    id2 --> id1
    id2 --> id3
    id4 --> id2
    id4 --> id5
    id6 --> id4
    id6 --> id8
    id8 --> id7
    id8 --> id9
    end
    subgraph color [color change]
    direction TB
    id10((0))
    id11((1))
    id12((2))
    id13((3))
    id14((4))
    id15((5))
    id16((6))
    id17((7))
    id18((8))
    style id10 fill:#0f0,color:#fff
    style id11 fill:#f00,color:#fff
    style id12 fill:#0f0,color:#fff
    style id13 fill:#000,color:#fff
    style id14 fill:#0f0,color:#fff
    style id15 fill:#f00,color:#fff
    style id16 fill:#0f0,color:#fff
    style id17 fill:#000,color:#fff
    style id18 fill:#0f0,color:#fff
    id11 --> id10
    id11 --> id12
    id13 --> id11
    id13 --> id14
    id15 --> id13
    id15 --> id17
    id17 --> id16
    id17 --> id18
    end
    situation --> color
    color --> sd[assume '5' is inserted, continue adjusting]
```
```mermaid
---
title: Opposite direction
---
flowchart TB
    subgraph situation
    direction TB
    id1((0))
    id2((1))
    id3((2))
    id4((3))
    id5((4))
    id6((5))
    id7((6))
    id8((7))
    id9((8))
    style id1 fill:#0f0,color:#fff
    style id2 fill:#f00,color:#fff
    style id3 fill:#0f0,color:#fff
    style id4 fill:#f00,color:#fff
    style id5 fill:#0f0,color:#fff
    style id6 fill:#000,color:#fff
    style id7 fill:#0f0,color:#fff
    style id8 fill:#f00,color:#fff
    style id9 fill:#0f0,color:#fff
    id2 --> id1
    id2 --> id4
    id4 --> id3
    id4 --> id5
    id6 --> id2
    id6 --> id8
    id8 --> id7
    id8 --> id9
    end
    subgraph single0 [child single rotation]
    direction TB
    id10((0))
    id11((1))
    id12((2))
    id13((3))
    id14((4))
    id15((5))
    id16((6))
    id17((7))
    id18((8))
    style id10 fill:#0f0,color:#fff
    style id11 fill:#f00,color:#fff
    style id12 fill:#0f0,color:#fff
    style id13 fill:#f00,color:#fff
    style id14 fill:#0f0,color:#fff
    style id15 fill:#000,color:#fff
    style id16 fill:#0f0,color:#fff
    style id17 fill:#f00,color:#fff
    style id18 fill:#0f0,color:#fff
    id11 --> id10
    id11 --> id12
    id13 --> id11
    id13 --> id14
    id15 --> id13
    id15 --> id17
    id17 --> id16
    id17 --> id18
    end
    situation --> single0
    single0 --> sd[same direction]
```