在一个简单的二叉树中,我能够通过添加不可见节点和不可见边来使图形看起来正确,例如:
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,就像哪一个先出现但是没有区别。如何告诉程序将特定节点或边缘放在特定端?
答案 0 :(得分:1)
对于从左到右的顺序,节点创建顺序是相关的。必须在其正确的兄弟节点之前创建左节点。
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"];
}