Graphviz是开源免费跨平台图形绘制工具,使用其提供的dot语法,可以很方便的用来绘制“图”结构(这里的图可以理解为是数学上或者计算机科学中所说的图),并支持多种格式输出。 ###语法 首先,来简单看一下dot语法。 1. 使用digraph关键字定义有向图,使用->表述节点之间的关系。如: (g是图的名称,a,b,c是三个节点)
digraph g {
a->b;
b->c;
c->a;
}
graph g {
a--b;
b--c;
c--a;
}
graph g {
a--b[color=cyan];
b--c[style=dotted];
c--a[color=indigo];
a[shape=oval, label="A", color=green];
b[shape=rect, label="B", color=blue];
c[shape=circle, label="C", style=filled, fillcolor=cyan];
}
我们可以使用: dot -Tpdf tree.dot -o tree.pdf 输出为PDF文档, 也可以使用: dot -Tpng tree.dot -o tree.png输出为PNG图片, 具体可使用dot –help命令进行查看。
### 二叉树的绘制 对于二叉树由于有左右子叶的存在,所以我们有时需要绘制一些节点,然后设置其属性为隐藏。比如,有一个节点只有左节点,没有右节点,那么,我们绘制的时候,可以同时绘制左右节点,然后设置有节点的属性为隐藏。 下面给出一个示例:
graph g {
A--B;
A--C;
B--D;
B--NULL[style=invis];
A[shape=circle, label="root"];
B[shape=circle, label="left child"];
C[shape=circle, label="right child"];
D[shape=circle, label="left grandchild"];
NULL[style=invis];
}