除Graphviz外,TikZ也是可以进行数据结构绘图的。以同样的红黑树为例子,用TikZ重新实现一遍。Graphviz的基本模型就是节点和边,这和图算法的两个最基本概念是一样的。而Tikz也是这样,
基本语法
节点,命令语法为:
\node[name=\name] at (\x,\y) {\content};
当然,节点除了name这个属性外,还有填充颜色,字体颜色,形状等样式属性。
边,命令语法为:
\draw[->] (\from) -> (\to);
循环语句,语法为:
\foreach \var1/\var2/\var3/... in {data1/data2/data3,...}{
code...;
}
代码例子
以红黑树为例子,Tikz代码要比graphviz代码简洁很多:
\documentclass[UTF8, a4paper,12pt]{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\foreach \x/\y/\name in {0/4/0,3/4/4,4/8/5,5/4/6,7/4/8}{
\node[white,fill=black,shape=circle,name=\name] at (\x,\y) {\name};
}
\foreach \x/\y/\name in {2/6/3,6/6/7,1/2/2,8/2/9}{
\node[white,fill=red,shape=circle,name=\name] at (\x,\y) {\name};
}
\foreach \from/\to in {5/3,5/7,3/0,3/4,0/2,5/7,7/6,7/8,8/9} {
\draw[->] (\from) -- (\to);
}
\end{tikzpicture}
\end{document}
编译效果

Tikz视觉效果是完全不属于graphviz的。
版权声明:本文为m0_66201040原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。