在尝试使用Graphviz创建二叉树的图表时,我遇到了一个问题。很明显,在树的高度足够高且nodesep
足够大的情况下,结果图表往往不对称。这里是一个点源代码示例:
digraph G {
nodesep=0.8;
ranksep=0.5;
{node[style=invis,label=""]; cx_30;
}
{rank=same; 20; 45; cx_30}
{rank=same; 10; 25;}
{rank=same; 40; 50}
30 -> 20;
30 -> 45;
20 -> 10;
20 -> 25;
45 -> 40;
45 -> 50;
{edge[style=invis];
//Distantiate nodes
30 -> cx_30;
20 -> cx_30 -> 45;
//Force ordering between childs
10:e -> 25:w;
40:e -> 50:w;
}
}
使用相应输出命令(使用dot -Tpng file.dot > file.png
编译)可以得到以下输出结果:
![dot tree result](https://istack.dev59.com/HBKUy.webp)
从图中可以看出,45
未被放置在40
和50
的中间位置。您可以在40
和50
之间插入不可见节点以矫正此情况,但导致的间距会太宽。
您是否做错了什么?有没有办法纠正这种情况?