tikz 树:如何将树的子节点移动到顶层?

tikz 树:如何将树的子节点移动到顶层?

我的乳胶代码:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{graphs,graphdrawing} 
\usegdlibrary{trees}
\begin{document}
\begin{figure}
    \centering
    \begin{tikzpicture}
    % draw a tree
    \tikz [grow'=up, binary tree layout, nodes={circle,draw}]
      \node {9}
      child { node {8}
        child { node {6} 
          child { node {1} }
          child { node {2} }
        }
        child { node {7}
          child { node {3} }
          child { node {4} }
        }
      }
      child { node {5} };
\end{tikzpicture}
\end{figure}
\end{document}

在输出中,节点 5 与节点 8 处于同一级别

在此处输入图片描述

在我的预期输出中,节点 5 应该与节点 1、2、3 和 4 位于顶层。

在此处输入图片描述

我怎样才能将节点 5 移到顶部?

答案1

forest如果是一种选择的话,这是非常简单的。

\documentclass[border=5pt]{standalone}
\usepackage{forest}
\begin{document}
\begin{forest}
  for tree={circle, draw, l sep'+=2pt, grow'=90, edge+=blue, fill=blue, text=white, font=\sffamily, child anchor=parent, parent anchor=children},
  for leaves={tier=leaf},
  [9 
    [8
      [6
        [1]
        [2]
      ]
      [7
        [3]
        [4]
      ]
    ]
    [5]
  ]
\end{forest}
\end{document}

单层树叶的森林树

根据 Zarko 的评论,我注意到只有部分子元素的边缘是从父元素上的一个公共点绘制的。如果您不想要这种情况,您可以删除parent anchor=children和/或child anchor=parent更有选择地应用该选项。

没有指定子/父锚点

\documentclass[border=5pt]{standalone}
\usepackage{forest}
\begin{document}
\begin{forest}
  for tree={circle, draw, l sep'+=2pt, grow'=90, edge+=blue!50!gray, fill=blue!50!gray, text=white, font=\sffamily, inner sep=1.5pt,},
  for leaves={tier=leaf},
  [9 
    [8
      [6
        [1]
        [2]
      ]
      [7
        [3]
        [4]
      ]
    ]
    [5]
  ]
\end{forest}
\end{document}

如果forest没有这个选项,请告诉我,我可以删除它。

相关内容