我正忙着制作一棵深度为三层的满二叉树。
我现在拥有的代码是(使用树库):
\begin{tikzpicture}
\node {root}
child {node {left}
child {node {lleft}}
child {node {rleft}}
}
child {node {right}
child {node {lright}}
child {node {rright}}
};
\end{tikzpicture}
问题是 rleft 和 rright 互相打印在一起。
我希望 tikz 自己解决这个问题,例如,如果我给出同一级别节点之间的最小距离。这可能吗?(我的最终节点将没有文本,但将是固定大小的形状)
当然,解决方案可以是:“不要使用‘树’”。在这种情况下,最好的方法是什么?
答案1
tikz-qtree
是一个很棒的软件包,可以更方便地绘制树tikz
。
答案2
您可以为每个级别指定选项,例如兄弟距离以及级别距离。
例子:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{trees}
\begin{document}
\begin{tikzpicture}[level distance=1.5cm,
level 1/.style={sibling distance=3cm},
level 2/.style={sibling distance=1.5cm}]
\node {root}
child {node {left}
child {node {lleft}}
child {node {rleft}}
}
child {node {right}
child {node {lright}}
child {node {rright}}
};
\end{tikzpicture}
\end{document}
输出:
答案3
我想forest
也值得一提。
代码
\documentclass[border=2pt]{standalone}
\usepackage{forest}
\begin{document}
\begin{forest}
for tree={l+=1cm} % increase level distance
[root
[left[lleft][lright]]
[right[rleft][rright]]
]
\end{forest}
\end{document}
输出
答案4
推荐使用 PSTricks 的解决方案,只是为了好玩。
\documentclass[preview,border=12pt]{standalone}
\usepackage{pst-tree}
\psset{treemode=D,nodesep=3pt}
\begin{document}
\psTree{\Tr{root}}
\psTree{\Tr{left}}
\Tr{lleft}
\Tr{rleft}
\endpsTree
\psTree{\Tr{right}}
\Tr{lright}
\Tr{rright}
\endpsTree
\endpsTree
\end{document}