
\documentclass[]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,fit,shapes.geometric}
\usepackage{amssymb}
\begin{document}
\begin{tikzpicture}[]
\tikzstyle{tree_op}=[rectangle,draw=black,fill=gray!30,thick,minimum size=6mm,inner sep=0pt]
\tikzstyle{tree_subtree}=[rectangle,draw = black,densely dotted,fill=gray!30,thick,minimum size=6mm,inner sep=0pt]
\tikzstyle{triangle}=[inner sep=0pt,text=red,draw, regular polygon, regular polygon sides=3, align=center]
\tikzstyle{level 1}=[sibling distance=14mm,level distance=10mm]
\tikzstyle{level 2}=[sibling distance=14mm]
\tikzstyle{level 3}=[sibling distance=20mm]
\tikzstyle{level 4}=[sibling distance=11mm,level distance=11mm]
\node [tree_op] (root){$\rightarrow $}
child {node [triangle] (t1) {$\triangle_1$}}
child {node [triangle] (ti) {$\triangle_i$}}
child {node [triangle] (tj) {$\triangle_j$}}
child {node [triangle] (tn) {$\triangle_n$}}
;
\end{tikzpicture}
\end{document}
Ich habe zwei Probleme mit dem aktuellen Ergebnis:
- Dreiecke haben unterschiedliche Abmessungen
- Kanten sollten mit der Spitze des Dreiecks verbunden sein
Antwort1
Um Ihre Probleme zu lösen, habe ich hinzugefügt
- ein
equal size
Stil (der auf basierteqparbox
), der sicherstellt, dass die Knoten gleich groß sind, und child anchor=north
.
Bitte beachten Sie, dass dies \tikzstyle
veraltet ist, weshalb ich es durch die entsprechende \tikzset
Syntax ersetzt habe. (Ich habe auch die erhöht, level distance
aber das können Sie natürlich rückgängig machen, wenn es Ihnen nicht gefällt.)
\documentclass[]{standalone}
\usepackage{tikz}
\usepackage{eqparbox}
\newbox\nodebox
\usetikzlibrary{trees,shapes.geometric}
\usepackage{amssymb}
\begin{document}
\begin{tikzpicture}[]
\tikzset{tree_op/.style={rectangle,draw=black,fill=gray!30,thick,minimum size=6mm,inner sep=0pt},
tree_subtree/.style={rectangle,draw = black,densely dotted,fill=gray!30,thick,minimum size=6mm,inner sep=0pt},
triangle/.style={inner sep=0pt,text=red,draw, regular polygon, regular polygon
sides=3, align=center,equal size=T},
level 1/.style={sibling distance=14mm,level distance=14mm},
level 2/.style={sibling distance=14mm},
level 3/.style={sibling distance=20mm},
level 4/.style={sibling distance=11mm,level distance=11mm},
equal size/.style={execute at begin
node={\setbox\nodebox=\hbox\bgroup},
execute at end
node={\egroup\eqmakebox[#1][c]{\copy\nodebox}}}}
\node [tree_op] (root){$\rightarrow $}
[child anchor=north]
child {node [triangle] (t1) {$\triangle_1$}}
child {node [triangle] (ti) {$\triangle_i$}}
child {node [triangle] (tj) {$\triangle_j$}}
child {node [triangle] (tn) {$\triangle_n$}}
;
\end{tikzpicture}
\end{document}