分离低级子节点

分离低级子节点

我正在尝试表示 Max Heapify 的图表。我使用了以下设置tikz

\usepackage{tikz}
\tikzset{
  heap/.style={
    every node/.style={circle,draw},
    level 1/.style={sibling distance=80mm},
    level 2/.style={sibling distance=50mm},
    level 3/.style={sibling distance=30mm},
    level 4/.style={sibling distance=20mm}
  }
}

对于 tikzpicture,我写了以下内容

    \begin{tikzpicture}[heap]
  \node {6}
  child{node{8}
    child{node{9} 
    child{node{13}} child{node{23}}} 
    child{node{7}
        child{node{1}} child{node{5}}}} 
  child{node{5}
    child{node{12}
    child{node{7}} child{node{10}}} 
    child{node{4}
    child{node{4}}}} 
  ;
\end{tikzpicture}

显然,最低级别的两个子节点似乎在输出中合并在一起

在此处输入图片描述

我该如何修复这个问题,以便底部的子节点不会合并?

答案1

根节点没有兄弟节点,因此您从根节点下方的第一级开始计数。此处树的最低级别是第 3 级。

在此处输入图片描述

\documentclass[tikz,border=3.14mm]{standalone}
\begin{document}

        \tikzset{
              heap/.style={
                every node/.style={circle,draw,minimum width=8mm},
                level 1/.style={sibling distance=80mm},
                level 2/.style={sibling distance=50mm},
                level 3/.style={sibling distance=20mm}, % <----- Here's the lowest level of your tree
                level 4/.style={sibling distance=10mm}
              }
            }
    \begin{tikzpicture}[heap]

            
        \node {6}
              child{node{8}
                child{node{9} 
                child{node{13}} child{node{23}}} 
                child{node{7}
                    child{node{1}} child{node{5}}}} 
              child{node{5}
                child{node{12}
                child{node{7}} child{node{10}}} 
                child{node{4}
                child{node{4}}}} 
              ;
    \end{tikzpicture}
\end{document}

相关内容