Ich habe den folgenden Code. Wenn ich die edge
Befehle 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:
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>
likenode {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}