Ich erhalte unsinnige Kanten in meinem Baum oder wie bekomme ich Beschriftungen für Kanten?

Ich erhalte unsinnige Kanten in meinem Baum oder wie bekomme ich Beschriftungen für Kanten?

Ich habe den folgenden Code. Wenn ich die edgeBefehle entferne, ist alles in Ordnung. Ich nehme an, das Problem ist, dass meine Knoten den gleichen Inhalt haben, aber das kann ich offensichtlich nicht vermeiden.

Ungültiger Code:

\documentclass[tikz,margin=10pt]{standalone}

\usetikzlibrary{positioning,shapes,arrows}

\begin{document}

\tikzset{
  treenode/.style = {align=center, inner sep=0pt, text centered,
    font=\sffamily},
}

\begin{tikzpicture}[->,>=stealth',level/.style={sibling distance = 5cm/#1, level distance = 1.5cm}] 
 \node (n) {  0  } 
 child { node  (n0)  {  0  } 
 edge from parent node[left] {  0  } 
 child { node  (n00)  {  0  } 
 edge from parent node[left] {  0  } 
 } 
 child { node  (n01)  {  1  } 
 edge from parent node[left] {  1  } 
 } 
 } 
 child { node  (n1)  {  1  } 
 edge from parent node[left] {  1  } 
 child { node  (n10)  {  0  } 
 edge from parent node[left] {  0  } 
 } 
 child { node  (n11)  {  1  } 
 edge from parent node[left] {  1  } 
 } 
 } 
 ; 
 \end{tikzpicture}
\end{document}

\end{document}

Guter Code (aber ohne Labels):

\documentclass[tikz,margin=10pt]{standalone}

\usetikzlibrary{positioning,shapes,arrows}

\begin{document}

\tikzset{
  treenode/.style = {align=center, inner sep=0pt, text centered,
    font=\sffamily},
}

\begin{tikzpicture}[->,>=stealth',level/.style={sibling distance = 5cm/#1, level distance = 1.5cm}] 
 \node (n) {  0  } 
 child { node  (n0)  {  0  } 
 child { node  (n00)  {  0  } 
 } 
 child { node  (n01)  {  1  } 
 } 
 } 
 child { node  (n1)  {  1  } 
 child { node  (n10)  {  0  } 
 } 
 child { node  (n11)  {  1  } 
 } 
 } 
 ;
\end{tikzpicture}
\end{document}

\end{document}

Antwort1

Schauen Sie sich den folgenden Code an. Sie müssen Ihre Kanten an der richtigen Stelle positionieren, dann funktioniert es. Sie müssen die Kante nach allen untergeordneten Knoten einfügen. Wenn Sie sie vor dem Hinzufügen einfügen, wird (ich gehe davon aus) ein neuer Knoten erstellt, der als Stammknoten für alle folgenden untergeordneten Knoten verwendet wird.

Das Problem wird angezeigt, wenn Sie versuchen, in Ihrem Code den untersten Knoten weitere untergeordnete Elemente hinzuzufügen.

\documentclass[tikz,margin=5mm]{standalone}

\begin{document}
 \begin{tikzpicture}[->, %
                    >=stealth, %
                    level distance=1.5cm, %
                    level 1/.style={sibling distance=2.5cm}, %
                    level 2/.style={sibling distance=1.5cm}]
  \node (n) {0}
   child { node (n0) {0} {
    child { node (n00) {0} edge from parent node [left] {0} }
    child { node (n01) {1} edge from parent node [left] {1} }
    } edge from parent node [left] {0}
   }
   child { node (n1) {1} {
    child { node (n10) {0} edge from parent node [left] {0} }
    child { node (n11) {1} edge from parent node [left] {1} }
    } edge from parent node [left] {1}
   }
  ;
 \end{tikzpicture}
\end{document}

Gerendertes Bild:

gerendertes Bild

Antwort2

Aus dem pgf-Handbuch:

\path . . . edge from parent[<Options>] . . . ; Diese Pfadoperation kann nur innerhalb verwendet werden <child paths>und sollte am Ende angegeben werden, möglicherweise gefolgt von <node specifications>like node {a}. Wenn a <child path>diese Operation nicht enthält, wird sie automatisch am Ende von hinzugefügt <child path>. \documentclass[tikz,margin=10pt]{standalone} \usetikzlibrary{arrows}

\begin{document}
\begin{tikzpicture}[
    ->,
    >=stealth',
    level/.style={sibling distance = 5cm/#1, level distance = 1.5cm}
  ] 
  \node (n) {  0  } 
    child { node  (n0)  {  0  } 
      child { node  (n00)  {  0  } 
        edge from parent node[left] {0}
      } 
      child { node  (n01)  {  1  } 
        edge from parent node[right] {1}
      }
      edge from parent node[above left, inner sep=1pt,red] {0}% <-
    } 
    child { node  (n0)  {  1  } 
      child { node  (n00)  {  0  } 
        edge from parent node[left] {0}
      } 
      child { node  (n01)  {  1  } 
        edge from parent node[right] {1}
      }
      edge from parent node[above right, inner sep=1pt,red] {1}% <-
    } 
  ;
\end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen