Hacer cumplir el orden de los nodos horizontales en un árbol .dot

Estoy intentando recrear un diagrama de ejemplo para un árbol de búsqueda binario con GraphViz. Así es como debería verse al final:

Este es mi primer intento:

digraph G {
    nodesep=0.3;
    ranksep=0.2;
    margin=0.1;
    node [shape=circle];
    edge [arrowsize=0.8];
    6 -> 4;
    6 -> 11;
    4 -> 2;
    4 -> 5;
    2 -> 1;
    2 -> 3;
    11 -> 8;
    11 -> 14;
    8 -> 7;
    8 -> 10;
    10 -> 9;
    14 -> 13;
    14 -> 16;
    13 -> 12;
    16 -> 15;
    16 -> 17;
}

Pero, desafortunadamente, a GraphViz no le importan las posiciones horizontales del árbol, así que obtengo:

¿Cómo puedo agregar restricciones para que las posiciones horizontales de los vértices reflejen su ordenamiento total?

Respuestas a la pregunta(1)

Su respuesta a la pregunta