如何標記手動新增的樹的邊緣?

如何標記手動新增的樹的邊緣?

人們可以使用 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}

相關內容