
\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}
Tengo dos problemas con el resultado actual:
- los triangulos tienen diferentes dimensiones
- Los bordes deben conectarse al vértice del triangular.
Respuesta1
Para abordar sus problemas, agregué
- un
equal size
estilo (que se basa eneqparbox
) que garantiza que los nodos tengan tamaños iguales, y child anchor=north
.
Tenga en cuenta que \tikzstyle
está en desuso, por eso lo reemplacé por la \tikzset
sintaxis correspondiente. (También aumenté el level distance
pero, por supuesto, puedes deshacerlo si no te gusta).
\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}