如何将两个特定节点之间的路径设置为“垂直”而不是“直接”?
目前我的树看起来像这样:
\begin{tikzpicture}[level distance=1.5cm,
every node/.style={draw=black,very thick,minimum width=10mm,inner sep=2mm},
every path/.style={thick},
level 1/.style={sibling distance=4cm},
level 2/.style={sibling distance=2cm},
level 3/.style={sibling distance=0.5cm,level distance=10mm},
leaf/.style={fill=black,minimum width=2mm,minimum height=2mm,inner sep=0mm}]
\node{10}
child{node{8}
child{node{5}
child{node[leaf]{}}
child{node[leaf]{}}
}
child{node{9}
child{node[leaf]{}}
child{node[leaf]{}}
}
}
child{node{20}
child{node{12}
child{node[leaf]{}}
child{node[leaf]{}}
}
child{node{21 29}
child[edge from parent]{node[leaf]{}}
child{node[leaf]{}}
child{node[leaf]{}}
}
};
\end{tikzpicture}
我希望最后一行和叶子之间的路径是垂直的,而不是对角的。
答案1
您可以使用 键更改绘制边缘的方式edge from parent path
。将level 3/.style
线条更改为:
level 3/.style={
sibling distance=0.5cm,
level distance=10mm,
edge from parent path={
(\tikzchildnode.north) -- (\tikzchildnode.north |- \tikzparentnode.south)
}
},
如果A
和B
是坐标,则是通过的垂直线和通过的水平线A |- B
的交点。因此画一条线到这个交点。A
B
(A) -- (A |- B)
如果你要经常这样做,那就形成自己的风格:
\tikzset{edge from parent vertical/.style={
edge from parent path={
(\tikzchildnode.north) -- (\tikzchildnode.north |- \tikzparentnode.south)
}
}}
然后您可以将该行更改为:
level 3/.style={sibling distance=0.5cm,level distance=10mm,edge from parent vertical}