如何标记手动添加的树的边?

如何标记手动添加的树的边?

可以使用 TikZ 手动创建树,或者使用森林套餐使这个过程更容易。下面我将展示如何使用森林套餐创建二叉树,然后使用 TikZ 手动绘制一些边,将其变成重组树。虽然我可以为任何未手动添加的边添加标签(如下面我对标签所做的那样袋鼠),我不知道如何将标签添加到边缘曾是手动添加。例如,如何标记从节点$S_1(T)=4$到节点的边$S_2(TH)=S_2(HT)=8$(见下图)?

重组二叉树

edge label={node [near end, above left, font=\footnotesize]{Kangaroo}}我只是尝试在下面的代码中复制粘贴相同的命令(即) (T) -- (TH),但没有作用。

\begin{forest}  
for tree={grow'=east}
[{$S_0=8$ },
    [{$S_1(T)=4$ },name=T,  
        [{$S_2(TT)=2$}, edge label={node [near end, above  left, font=\footnotesize]{Kangaroo}} ]
        [, phantom]
    ]
    [, phantom
        [{\qquad $S_2(TH)=S_2(HT)=8$},name=TH  ] 
    ]
    [{$S_1(H)=16$}, name=H
        [, phantom]
        [{$S_2(HH)=32$} ] 
    ]   
] 
\draw (T) -- (TH)  (H) -- (TH);
\end{forest}

仅供参考,[,phantom] 节点只是用于帮助间隔的空节点,它们并不是真正必要的。

答案1

您正在寻找l sep维度

也可以借助sloped定位或中途调整标签的版本pos=0.5yshift

在此处输入图片描述

\begin{forest} 
    for tree={grow'=east, s sep=2em, l sep=2cm}
    [{$S_0=8$ },
    [{$S_1(T)=4$ },name=T,  
    [{$S_2(TT)=2$}, edge label={node [pos=0.5, above, yshift=-4pt ,sloped, 
     font=\scriptsize]{Kangaroo}} ]
    [, phantom]
    ]
    [, phantom
    [{\qquad $S_2(TH)=S_2(HT)=8$},name=TH  ] 
    ]
    [{$S_1(H)=16$}, name=H
    [, phantom]
    [{$S_2(HH)=32$} ] 
    ]   
    ] 
    \draw (T) -- (TH)  (H) -- (TH);
\end{forest}

编辑

在此处输入图片描述

添加以下内容——

\node at ($(T)!0.5!(TH)$)
        [rotate=-22, yshift=5pt]
        {\footnotesize\color{red} Kangaroo};

平均能量损失

 \begin{forest} 
    for tree={grow'=east, s sep=2em, l sep=2cm}
    [{$S_0=8$ },
    [{$S_1(T)=4$ },name=T,  
    [{$S_2(TT)=2$}, edge label={node [pos=0.5,above,yshift=-4pt,sloped, 
    font=\footnotesize]{Kangaroo}} ]
    [, phantom]
    ]
    [, phantom
    [{\qquad $S_2(TH)=S_2(HT)=8$},name=TH  ] 
    ]
    [{$S_1(H)=16$}, name=H
    [, phantom]
    [{$S_2(HH)=32$} ] 
    ]   
    ] 
    \draw (T) -- (TH)  (H) -- (TH);
    \node at ($(T)!0.5!(TH)$)
    [rotate=-22, yshift=5pt]
    {\footnotesize\color{red} Kangaroo};
\end{forest}

相关内容