Tikz 只为树的一个分支上色

Tikz 只为树的一个分支上色

这是我的树:

\begin{figure}[H]
   \centering
   \begin{tikzpicture}[
            grow=right,
            edge from parent/.style={draw, -latex},
            level distance=20mm,
            sibling distance=15mm,
         ]
      \node[state, thickgray]{1}
         child[thickgray]{
            node[state, thickgray]{2}
               child{node[state]{3}}
         }
         child[thickgray]{node[state, thickgray]{4}}
         child{
            node[state, thickred]{5}
               child[thickred]{node[state, thickred]{6}}
               child{node[state]{7}}
         };
   \end{tikzpicture}
\end{figure}

目前看起来像:

在此处输入图片描述

我想将 1 到 5 的分支涂成红色thickred,但如果我将这样的参数放在child{}包含它的上,则 1 到 5 和 5 到 7 都涂成红色。我该如何隔离 1 到 5(最好同时保持这种构建树的方式,我\tree现在想避免这种情况)。

答案1

首先需要将根节点node和第一个child应被涂成红色的节点设置为thickred。然后(因为这种树状设置中的样式是由子节点继承的),在层次结构的较低位置,将第一个child应被涂成灰色的节点重新设置为thickgray或重置其样式(通过使用默认值覆盖它):

\documentclass[border=1mm, tikz]{standalone}
\usetikzlibrary{trees}

\begin{document}

\begin{tikzpicture}[
            grow=right,
            edge from parent/.style={draw, -latex},
            level distance=20mm,
            sibling distance=15mm,
            state/.style={circle, draw},
            thickgray/.style={thick, gray},
            thickred/.style={thick, red},
            reset/.style={thin, black}
         ]
    \node[state, thickred]{1}
         child[thickgray]{
            node[state]{2}
               child{node[state]{3}}
         }
         child[thickgray]{node[state]{4}}
         child[thickred]{
            node[state]{5}
               child[reset]{node[state]{6}}
               child[reset]{node[state]{7}}
         };
\end{tikzpicture}
   
\end{document}

在此处输入图片描述

相关内容