![使用“地面”符号表示二叉树中的空子节点](https://linux22.com/image/294789/%E4%BD%BF%E7%94%A8%E2%80%9C%E5%9C%B0%E9%9D%A2%E2%80%9D%E7%AC%A6%E5%8F%B7%E8%A1%A8%E7%A4%BA%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E7%9A%84%E7%A9%BA%E5%AD%90%E8%8A%82%E7%82%B9.png)
我使用ground
符号来表示二叉树中的空子节点。但是地面符号中有箭头。我该如何移除它们?
\documentclass{llncs}
\usepackage{llncsdoc}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}
\usetikzlibrary{shapes.geometric,arrows,fit,matrix,positioning,pgfplots.groupplots}
\usepackage{circuitikz}
\begin{document}
\tikzset
{
treenode/.style = {circle, draw=black, align=center, minimum size=1cm},
subtree/.style = {isosceles triangle, draw=black, align=center, minimum height=0.5cm, minimum width=1cm, shape border rotate=90, anchor=north}
}
\begin{figure}[t]
\centering
\caption{A binary tree. \label{fig:simple}}
{
\begin{tikzpicture}[->,scale=0.6, transform shape]
%-----------------------------------------------------------------------
\node (x)[treenode] at (-3,0) {$X$ \\ 100};
\node (y)[treenode, fill=black!20] at (-4.5,-1.5) {$Y$ \\ 50};
\node (a)[subtree] at (-1,-1) {\Large $\alpha$};
\node (b)[subtree] at (-6,-2.5) {\Large $\beta$};
\node (gnd)[ground] at (-2.5,-2.5) {};
\path[every node/.style={font=\sffamily\small}]
(-3, 1) edge node {} (x)
(x) edge node {} (y)
(x) edge node {} (a.north)
(y) edge node {}(b.north)
(y) edge node {}(gnd);
%-----------------------------------------------------------------------
\end{tikzpicture}
}
\end{figure}
\end{document}
答案1
我想在这里提出一种替代方案,使用库ground
中的符号circuits.ee.IEC
并使用强大的forest
绘制树的包:
代码:
\documentclass{llncs}
\usepackage{llncsdoc}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric,arrows,fit,matrix,positioning,pgfplots.groupplots,circuits.ee.IEC}
\usepackage{forest}
\tikzset{
treenode/.style = {
circle,
draw=black,
align=center,
minimum size=1cm
},
subtree/.style = {
isosceles triangle,
draw=black,
align=center,
minimum height=0.5cm,
minimum width=1cm,
shape border rotate=90,
anchor=north
}
}
\newsavebox\mybox
\newcommand\Ground{%
\begin{tikzpicture}[circuit ee IEC,scale=1.5]
\draw (0,0) to +(0,-1.35ex) node[ground,rotate=-90,inner sep=0pt,xshift=0.65ex] {};
\end{tikzpicture}%
}
\savebox\mybox{$\Ground$}
\begin{document}
\begin{figure}[t]
\centering
\caption{A binary tree. \label{fig:simple}}
\begin{forest}
for tree={
scale=0.6,
parent anchor=south,
child anchor=north,
edge={->},
s sep=20pt,
}
[
[$X$\\$100$,treenode
[$Y$\\$50$,treenode,fill=gray!30
[$\beta$,subtree]
[\usebox\mybox,yshift=0.5cm]
]
[$\alpha$,subtree
]
]
]
\end{forest}
\end{figure}
\end{document}
答案2
经过一小时的调查,->
从tikzpicture
环境中移除到path
命令将解决问题。
代码
\documentclass{llncs}
\usepackage{llncsdoc}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usetikzlibrary{shapes.geometric,arrows,fit,matrix,positioning,pgfplots.groupplots}
\usepackage{circuitikz}
\begin{document}
\tikzset
{
treenode/.style = {circle, draw=black, align=center, minimum size=1cm},
subtree/.style = {isosceles triangle, draw=black, align=center, minimum height=0.5cm, minimum width=1cm, shape border rotate=90, anchor=north}
}
\begin{figure}[t]
\centering
\caption{A binary tree. \label{fig:simple}}
{
\begin{tikzpicture}[scale=0.6, transform shape]
%-----------------------------------------------------------------------
\node (x)[treenode] at (-3,0) {$X$ \\ 100};
\node (y)[treenode, fill=black!20] at (-4.5,-1.5) {$Y$ \\ 50};
\node (a)[subtree] at (-1,-1) {\Large $\alpha$};
\node (b)[subtree] at (-6,-2.5) {\Large $\beta$};
\node (gnd)[ground] at (-2.5,-2.5) {};
\path[->,every node/.style={font=\sffamily\small}]
(-3, 1) edge node {} (x)
(x) edge node {} (y)
(x) edge node {} (a.north)
(y) edge node {}(b.north)
(y) edge node {}(gnd);
%-----------------------------------------------------------------------
\end{tikzpicture}
}
\end{figure}
\end{document}