내 트리에서 무의미한 가장자리를 얻거나 가장자리에 레이블을 얻는 방법

내 트리에서 무의미한 가장자리를 얻거나 가장자리에 레이블을 얻는 방법

다음 코드가 있습니다. 명령을 제거하면 edge모든 것이 정상입니다. 문제는 내 노드가 동일한 내용을 가지고 있다는 것인데, 분명히 이것을 피할 수는 없습니다.

잘못된 코드:

\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}

좋은 코드(그러나 라벨이 없음):

\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}

답변1

다음 코드를 살펴보세요. 가장자리를 올바른 위치에 배치해야 작동합니다. 모든 하위 노드 뒤에 가장자리를 붙여넣어야 합니다. 다음의 모든 자식에 대한 루트 노드로 사용되는 새 노드를 생성하기 전에 삽입하면(나는 그렇게 가정합니다).

코드의 하위 노드를 가장 낮은 노드에 추가하려고 하면 문제가 발생합니다.

\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}

렌더링된 이미지:

렌더링된 이미지

답변2

pgfmanual에서:

\path . . . edge from parent[<Options>] . . . ; 이 경로 연산은 내부에서만 사용할 수 <child paths>있으며 끝에 제공해야 하며 가능하면 <node specifications>like 가 뒤에 올 수 있습니다 node {a}. a에 <child path>이 작업이 포함되어 있지 않으면 자동으로 끝에 추가됩니다 <child path>. \documentclass[tikz,margin=10pt]{독립형} \usetikzlibrary{화살표}

\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}

여기에 이미지 설명을 입력하세요

관련 정보