如何在简单的二叉树中选择节点在哪一侧?

How to pick which side a node is on in a simple binary tree?

在一个简单的二叉树中,我可以通过添加不可见的节点和不可见的边来使图形看起来正确,例如来自:

digraph
{
        vertex_1 [label="A"];
        vertex_2 [label="B"];
        vertex_2 -> vertex_1 [label="Left"];
}

产生:

至:

digraph
{
        vertex_1 [label="A"];
        vertex_2 [label="B"];
        vertex_0 [style=invis];
        vertex_2 -> vertex_1 [label="Left"];
        vertex_2 -> vertex_0 [style=invis];
}

产生:

但是当我用一个 4 节点图(它最初是直上直下)尝试这个技巧时,我得到的是:

digraph
{
        vertex_1 [label="A"];
        vertex_2 [label="B"];
        vertex_3 [label="F"];
        vertex_4 [label="G"];
        vertex_01 [style=invis];
        vertex_02 [style=invis];
        vertex_03 [style=invis];
        vertex_4 -> vertex_3 [label="Left"];
        vertex_3 -> vertex_1 [label="Left"];
        vertex_1 -> vertex_02 [style=invis];
        vertex_4 -> vertex_03 [style=invis];
        vertex_3 -> vertex_01 [style=invis];
        vertex_1 -> vertex_2 [label="Right"];
}

产生了:

显然我希望 B 在 A 的右侧。我尝试将不可见边语句和实际边的顺序从 B 切换到 A,比如哪个先出现,但这没有区别。我如何告诉程序将特定节点或边缘放在特定一侧?

对于从左到右的顺序,节点创建顺序是相关的。左节点必须在其右兄弟节点之前创建。

digraph
{
    vertex_1 [label="A"];
    vertex_02 [style=invis];
    vertex_2 [label="B"];
    vertex_3 [label="F"];
    vertex_4 [label="G"];
    vertex_01 [style=invis];
    vertex_03 [style=invis];
    vertex_4 -> vertex_3 [label="Left"];
    vertex_3 -> vertex_1 [label="Left"];
    vertex_1 -> vertex_02 [style=invis];
    vertex_4 -> vertex_03 [style=invis];
    vertex_3 -> vertex_01 [style=invis];
    vertex_1 -> vertex_2 [label="Right"];
}