# Remove ## There is at least one subtree Select the replacement node If there is a right subtree, select the leftmost node of the right subtree If there is a left subtree, select the rightmost node of the left subtree Both is ok If both are nil, assume the removed node is `child`, otherwise assume the replacement node is `child` ## Remove the 'child' ### The 'child' is red or root just remove the node ### The 'child' is black #### Brother is red ```mermaid --- title: There is a gnephew --- 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:#000,color:#fff style id2 fill:#000,color:#fff style id3 fill:#f00,color:#fff style id4 fill:#000,color:#fff style id5 fill:#f00,color:#fff style id6 fill:#f00,color:#fff style id7 fill:#f00,color:#fff style id8 fill:#000,color:#fff style id9 fill:#f00,color:#fff id2 --> id1 id2 --> id6 id6 --> id4 id6 --> id8 id4 --> id3 id4 --> id5 id8 --> id7 id8 --> id9 end subgraph single [brother 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:#000,color:#fff style id11 fill:#000,color:#fff style id12 fill:#f00,color:#fff style id13 fill:#000,color:#fff style id14 fill:#f00,color:#fff style id15 fill:#f00,color:#fff style id16 fill:#f00,color:#fff style id17 fill:#000,color:#fff style id18 fill:#f00,color:#fff id11 --> id10 id11 --> id13 id13 --> id12 id13 --> id14 id15 --> id11 id15 --> id17 id17 --> id16 id17 --> id18 end subgraph single0 [gnephew single rotation] direction TB id19((0)) id20((1)) id21((2)) id22((3)) id23((4)) id24((5)) id25((6)) id26((7)) id27((8)) id28((nil)) id29((nil)) style id19 fill:#000,color:#fff style id20 fill:#000,color:#fff style id21 fill:#f00,color:#fff style id22 fill:#000,color:#fff style id23 fill:#f00,color:#fff style id24 fill:#f00,color:#fff style id25 fill:#f00,color:#fff style id26 fill:#000,color:#fff style id27 fill:#f00,color:#fff style id28 fill:#fff,color:#fff style id29 fill:#fff,color:#fff id20 --> id19 id20 --> id21 id21 --> id28 id21 --> id22 id22 --> id29 id22 --> id23 id24 --> id20 id24 --> id26 id26 --> id25 id26 --> id27 end subgraph single1 [gnephew single rotation] direction TB id30((0)) id31((1)) id32((2)) id33((3)) id34((4)) id35((5)) id36((6)) id37((7)) id38((8)) id39((nil)) id40((nil)) style id30 fill:#000,color:#fff style id31 fill:#000,color:#fff style id32 fill:#f00,color:#fff style id33 fill:#000,color:#fff style id34 fill:#f00,color:#fff style id35 fill:#f00,color:#fff style id36 fill:#f00,color:#fff style id37 fill:#000,color:#fff style id38 fill:#f00,color:#fff style id39 fill:#fff,color:#fff style id40 fill:#fff,color:#fff id31 --> id30 id31 --> id39 id32 --> id31 id32 --> id33 id33 --> id40 id33 --> id34 id35 --> id32 id35 --> id37 id37 --> id36 id37 --> id38 end subgraph color [color change and remove] direction TB id41((nil)) id42((1)) id43((2)) id44((3)) id45((4)) id46((5)) id47((6)) id48((7)) id49((8)) style id41 fill:#fff,color:#fff style id42 fill:#000,color:#fff style id43 fill:#f00,color:#fff style id44 fill:#000,color:#fff style id45 fill:#f00,color:#fff style id46 fill:#000,color:#fff style id47 fill:#f00,color:#fff style id48 fill:#000,color:#fff style id49 fill:#f00,color:#fff id43 --> id42 id43 --> id44 id44 --> id41 id44 --> id45 id46 --> id43 id46 --> id48 id48 --> id47 id48 --> id49 end situation --> single single --> single0 single0 --> single1 single1 --> color ``` ```mermaid --- title: There is no gnephew --- flowchart TB subgraph situation direction TB id1((0)) id2((1)) id3((nil)) id4((3)) id5((4)) id6((5)) id7((6)) id8((7)) id9((8)) style id1 fill:#000,color:#fff style id2 fill:#000,color:#fff style id3 fill:#fff,color:#fff style id4 fill:#000,color:#fff style id5 fill:#f00,color:#fff style id6 fill:#f00,color:#fff style id7 fill:#f00,color:#fff style id8 fill:#000,color:#fff style id9 fill:#f00,color:#fff id2 --> id1 id2 --> id6 id6 --> id4 id6 --> id8 id4 --> id3 id4 --> id5 id8 --> id7 id8 --> id9 end subgraph single [brother single rotation] direction TB id10((0)) id11((1)) id12((nil)) id13((3)) id14((4)) id15((5)) id16((6)) id17((7)) id18((8)) style id10 fill:#000,color:#fff style id11 fill:#000,color:#fff style id12 fill:#fff,color:#fff style id13 fill:#000,color:#fff style id14 fill:#f00,color:#fff style id15 fill:#f00,color:#fff style id16 fill:#f00,color:#fff style id17 fill:#000,color:#fff style id18 fill:#f00,color:#fff id11 --> id10 id11 --> id13 id13 --> id12 id13 --> id14 id15 --> id11 id15 --> id17 id17 --> id16 id17 --> id18 end subgraph single0 [nephew single rotation] direction TB id20((0)) id21((1)) id22((nil)) id23((3)) id24((4)) id25((5)) id26((6)) id27((7)) id28((8)) style id20 fill:#000,color:#fff style id21 fill:#000,color:#fff style id22 fill:#fff,color:#fff style id23 fill:#000,color:#fff style id24 fill:#f00,color:#fff style id25 fill:#f00,color:#fff style id26 fill:#f00,color:#fff style id27 fill:#000,color:#fff style id28 fill:#f00,color:#fff id21 --> id22 id21 --> id20 id23 --> id21 id23 --> id24 id25 --> id23 id25 --> id27 id27 --> id26 id27 --> id28 end subgraph color [color change and remove] direction TB id31((1)) id33((3)) id34((4)) id35((5)) id36((6)) id37((7)) id38((8)) style id31 fill:#f00,color:#fff style id33 fill:#000,color:#fff style id34 fill:#f00,color:#fff style id35 fill:#000,color:#fff style id36 fill:#f00,color:#fff style id37 fill:#000,color:#fff style id38 fill:#f00,color:#fff id33 --> id31 id33 --> id34 id35 --> id33 id35 --> id37 id37 --> id36 id37 --> id38 end situation --> single single --> single0 single0 --> color ``` #### Brother is black ```mermaid --- title: There is a nephew --- flowchart TB subgraph situation direction TB id0((0)) id1((1)) id2((2)) id3((3)) id4((4)) style id0 fill:#000,color:#fff style id1 fill:#00f,color:#fff style id2 fill:#f00,color:#fff style id3 fill:#000,color:#fff style id4 fill:#f00,color:#fff id1 --> id0 id1 --> id3 id3 --> id2 id3 --> id4 end subgraph single [nephew single rotation] direction TB id10((0)) id11((1)) id12((2)) id13((3)) id14((4)) id15((nil)) id16((nil)) style id10 fill:#000,color:#fff style id11 fill:#00f,color:#fff style id12 fill:#f00,color:#fff style id13 fill:#000,color:#fff style id14 fill:#f00,color:#fff style id15 fill:#fff,color:#fff style id16 fill:#fff,color:#fff id11 --> id10 id11 --> id12 id12 --> id15 id12 --> id13 id13 --> id16 id13 --> id14 end subgraph single0 [nephew single rotation] direction TB id20((0)) id21((1)) id22((2)) id23((3)) id24((4)) id25((nil)) id26((nil)) style id20 fill:#000,color:#fff style id21 fill:#00f,color:#fff style id22 fill:#f00,color:#fff style id23 fill:#000,color:#fff style id24 fill:#f00,color:#fff style id25 fill:#fff,color:#fff style id26 fill:#fff,color:#fff id22 --> id21 id22 --> id23 id21 --> id20 id21 --> id25 id23 --> id26 id23 --> id24 end subgraph color [color change and remove] direction TB id31((1)) id32((2)) id33((3)) id34((4)) id35((nil)) style id31 fill:#000,color:#fff style id32 fill:#00f,color:#fff style id33 fill:#000,color:#fff style id34 fill:#f00,color:#fff style id35 fill:#fff,color:#fff id32 --> id31 id32 --> id33 id33 --> id35 id33 --> id34 end situation --> single single --> single0 single0 --> color ```