代码

代码

我正忙着制作一棵深度为三层的满二叉树。

我现在拥有的代码是(使用树库):

\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}

在此处输入图片描述

相关内容