前言
不知道你有没有找过一些工具来画数据结构的图,我反正是找了不少。windows下的visio是挺强大的,不过在linux没法使用,当然你非要使用也可以安装wine;亿图也不错,支持画数据结构图,不过是收费的。然而前面这些都不是重点,重点是他们画图都是拖拽类型的,手残党实在把持不住。最后终于发现了一款程序员画图神器-graphviz。《什么是二叉查找树》文中的树图就是用该工具画的.
graphviz简介
Graphviz是开源图形可视化软件。图形可视化是一种将结构信息表示为抽象图和网络图的方法。 它在网络,生物信息学,软件工程,数据库和网页设计,机器学习以及其他技术领域的可视化界面中具有重要的应用。--来自Graphviz官网https://www.graphviz.org/。
实际上它和markdown类似,markdown用纯文本编写文档,而能够转化成格式丰富的html,而graphviz使用dot标记语言来编写,能够被转换成svg,png,jpg等图形格式。甚至可以说,它就是用纯文本来完成画图。
除此之外,它还提供多种语言的api接口,例如,C,python,java,ruby等,也就是说,你可以根据自己的需要通过编写代码来生成你需要的图形。不过文本不准备使用这种方式,而是直接使用dot语言来画我们需要的图。
安装
linux,windows,mac等系统都支持,安装包下载地址:graphviz。具体安装过程就不介绍了。安装完成后,windows下有一个gvedit.exe的程序可以用来编辑预览,但是关键使用的还是dot.exe。而linux执行:
$ sudo apt-get install graphviz
安装完后就可以直接使用dot命令了。window下还有可视化界面,可以一边编写,一边预览。
如何画二叉树
实际上,它能够画各种各样的数据结构图,后面也会随着数据结构的介绍而不断介绍各种数据结构的画法,本文仅介绍树的画法。
digraph binaryTree{
node[shape=circle,color=red,fontcolor=blue,fontsize=10];
root[color=blue,fontcolor=black,fontsize=20];
root->a[style=dotted];
root->b;
a->c;
a->d;
b->e;
b->f;
}
将上面的内容保存在一个文件,并以.dot结尾,例如tree.dot。然后在命令行执行命令: