我正在尝试制作一个方案表达式的二叉树表示。但是,我注意到我无法重复单词“cons”作为唯一节点。树将简单地将第二个 cons 的所有后续节点与第一个 cons 联系起来。我在这里将它们命名为 con 和 cons 以显示我希望它如何出现,而不命名其余部分,以避免显示当我这样做时发生的灾难。
\documentclass{article}
\newcommand\tab[1][1cm]{\hspace*{#1}}
\usepackage{fancyhdr}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage[margin=1.0in]{geometry}
\usepackage{courier}
\usepackage{tikz}
\usetikzlibrary{graphs,graphdrawing,arrows.meta}
\usegdlibrary{trees}
\pagestyle{fancy}
\usepackage{amsmath}
\begin{document}
\begin{center}
\begin{tikzpicture}[>=Stealth]
\graph[binary tree layout]{
con -- {
1 ,
cons -- {
l -- {
m -- { n, o },
p -- { q, r }
},
s -- {
v -- {w, x},
y -- {z}
}
}
}
};
\end{tikzpicture}
\end{center}
\end{document}
答案1
我不确定哪些节点应该包含cons
哪些节点不应该包含,所以我把它们全部都做了cons
以防万一。每个唯一的节点都需要一个唯一的名称。但节点的内容不需要是唯一的。
\RequirePackage{luatex85}
\documentclass[border=10pt,multi,tikz]{standalone}
\usepackage{courier}
\usetikzlibrary{graphs,graphdrawing,arrows.meta}
\usegdlibrary{trees}
\begin{document}
\begin{tikzpicture}[>=Stealth]
\graph[binary tree layout]{
con/"cons" -- {
1/"cons" ,
cons -- {
l/"cons" -- {
m/"cons" -- { n/"cons", o/"cons" },
p/"cons" -- { q/"cons", r /"cons"}
},
s/"cons" -- {
v/"cons" -- {w/"cons", x/"cons"},
y/"cons" -- {z/"cons"}
}
}
}
};
\end{tikzpicture}
\end{document}