我根据这里的答案创建了一些代码:使用 LaTeX 标签绘制二叉树。
\documentclass[tikz,border=5]{standalone}
\usetikzlibrary{graphs,graphdrawing,graphs.standard,arrows.meta}
\usegdlibrary{trees}
\begin{document}
\tikzgraphsset{%
levels/.store in=\tikzgraphlevel,
levels=1,
declare={full_binary_tree}{[
/utils/exec={
\edef\treenodes{%
\directlua{%
function treenodes(l)
if l == 0 then
return "/"
else
return "/ [layer distance=" .. l*10 .. "]-> {" .. treenodes(l-1) .. ", " .. treenodes(l-1) .. "}"
end
end
tex.print(treenodes(\tikzgraphlevel) .. ";")
}%
}
},
parse/.expand once=\treenodes
]}
}
\begin{tikzpicture}
\graph[binary tree layout, grow=down, sibling distance=0pt, significant sep=-5pt, nodes={fill=red, draw=none, circle, inner sep=4pt, outer sep=0pt}, edge={style={very thick}}]{
full_binary_tree [levels=5];
};
\end{tikzpicture}
\end{document}
编译它lualatex
,你会得到这个:
问题:有人可以建议对上面的脚本进行编辑,以终止具有垂直省略号(三个垂直点)的节点的树,表示无限回归树向下?
因此,最低行的节点(并且只有最低行)将采用不同的样式,因此它们是省略号而不是红色圆圈。
谢谢。
答案1
在您等待 lua 解决方案时,这里有一个可能性forest
。
\documentclass{article}
\usepackage{forest}
\tikzset{mynode/.style={fill=red, circle, minimum size=3.5mm}}
\begin{document}
\begin{forest}
before typesetting nodes={for tree={if n children=0{content={$\vdots$}}{mynode}, edge={very thick, ->}, inner sep=0pt, s sep=3mm, outer sep=0pt}}
[,repeat=2{append={[,repeat=2{append={[,repeat=2{append={[,repeat=2{append={[,repeat=2{append={[]}}]}}]}}]}}]}}]
\end{forest}
\end{document}