digraph {
    "Node(value=3, rank=2)" [label="3"]; #done
    "Node(value=1, rank=1)" [label="1"]; #done
    "Node(value=4, rank=0)" [label="4"]; #done
    "Node(value=7, rank=1)" [label="7", color="red"]; #done
    "Node(value=0, rank=0)" [label="0"]; #done
    "Node(value=2, rank=0)" [label="2"]; #done
    "Node(value=5, rank=1)" [label="5"]; #done
    "Node(value=6, rank=0)" [label="6"]; #done
    "Node(value=8, rank=0)" [label="8"]; #done

    "nil1" [label="nil"]
    "nil2" [label="nil"]
    "nil3" [label="nil"]
    "nil4" [label="nil"]
    "nil5" [label="nil"]
    "nil6" [label="nil"]
    "nil7" [label="nil"]
    "nil8" [label="nil"]
    "nil9" [label="nil"]
    "nil10" [label="nil"]
    "nil11" [label="nil"]
    "Node(value=9, rank=0)" [label="9", color="red"]; #done

    "Node(value=3, rank=2)" -> "Node(value=1, rank=1)" #done
    "Node(value=1, rank=1)" -> "Node(value=0, rank=0)" #done
    "Node(value=1, rank=1)" -> "Node(value=2, rank=0)" #done
    "Node(value=3, rank=2)" -> "Node(value=5, rank=1)" #done
    "Node(value=5, rank=1)" -> "Node(value=4, rank=0)" #done
    "Node(value=5, rank=1)" -> "Node(value=7, rank=1)" [color="red"] #done
    "Node(value=7, rank=1)" -> "Node(value=6, rank=0)" #done
    "Node(value=7, rank=1)" -> "Node(value=8, rank=0)" #done

    "Node(value=8, rank=0)" -> "nil1"
    "Node(value=8, rank=0)" -> "Node(value=9, rank=0)" [color="red"] #done

    "Node(value=0, rank=0)" -> "nil2"
    "Node(value=0, rank=0)" -> "nil3"
    "Node(value=2, rank=0)" -> "nil4"
    "Node(value=2, rank=0)" -> "nil5"
    "Node(value=4, rank=0)" -> "nil6"
    "Node(value=4, rank=0)" -> "nil7"
    "Node(value=6, rank=0)" -> "nil8"
    "Node(value=6, rank=0)" -> "nil9"
    "Node(value=9, rank=0)" -> "nil10"
    "Node(value=9, rank=0)" -> "nil11"
}