Los bordes del árbol Tikz siempre se conectan a los elementos en la parte superior central.

Los bordes del árbol Tikz siempre se conectan a los elementos en la parte superior central.
\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}

ingrese la descripción de la imagen aquí

Tengo dos problemas con el resultado actual:

  1. los triangulos tienen diferentes dimensiones
  2. Los bordes deben conectarse al vértice del triangular.

Respuesta1

Para abordar sus problemas, agregué

  1. un equal sizeestilo (que se basa en eqparbox) que garantiza que los nodos tengan tamaños iguales, y
  2. child anchor=north.

Tenga en cuenta que \tikzstyleestá en desuso, por eso lo reemplacé por la \tikzsetsintaxis correspondiente. (También aumenté el level distancepero, 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}

ingrese la descripción de la imagen aquí

información relacionada