오른쪽으로 분기되는 불균형 이진 트리를 어떻게 만드나요?

오른쪽으로 분기되는 불균형 이진 트리를 어떻게 만드나요?

내가 원하는 이미지:

임구르

관심 있는 분들을 위해: 이 특정 수치는이 기사(무료로 사용 가능한 버전을 찾을 수 없습니다) 및 쇼k-버킷(사각형)은 바이너리 ID 공간의 점점 더 큰 접두사를 포함합니다.

이런 유형의 나무를 만드는 방법에 대해 누구든지 제안해 주시면 매우 감사하겠습니다.

  • 각 잎은 양동이/사각형입니다.
  • 나뭇잎에만 양동이가 있습니다.
  • 나무는 오른쪽으로 가지가 갈라져 각 가지의 공간이 이전 가지의 절반만큼 남습니다.

편집하다

나는 정확히 내가 원하는 것에 더 가까워지기 위해 Gonzalo Medina의 뛰어난 답변에 있는 숫자 중 일부를 약간 수정했지만, 무슨 일이 일어나고 있고 코드가 어떻게 작동하는지 전혀 모른다는 것을 고백해야 합니다.

이제 원하는 것은 수직축에서 상자가 겹치지 않도록 트리를 더 넓게 만드는 것입니다.

\begin{forest}
for tree={parent anchor=south, child anchor=north},
s sep=30pt,
[
  [,draw,text width=4cm,edge label={node[midway,left=12pt]{$1$}}]
  [,shape=coordinate,edge label={node[midway,right=10pt]{$0$}}
    [,draw,text width=2cm,edge label={node[midway,left=4pt]{$1$}}]
    [,shape=coordinate,s sep=-\pgflinewidth,edge label={node[midway,right=4pt]{$0$}}
      [,draw,text width=0.5cm,edge label={node[midway,left]{$1$}}]
      [,draw,text width=0.5cm,edge label={node[midway,right]{$0$}}]
    ]
  ]
]
\end{forest}

임구르

또한 일부 상자 안에 텍스트를 넣고 싶다면 어디에 넣을 수 있나요?

답변1

강력한 사람들과 함께forest패키지:

\documentclass{article}
\usepackage{forest}

\begin{document}

\begin{forest}
for tree={parent anchor=south, child anchor=north},
s sep=30pt,
[
  [,draw,text width=3cm,edge label={node[midway,left=4pt]{$0$}}]
  [,shape=coordinate,edge label={node[midway,right]{$1$}}
    [,draw,text width=2cm,edge label={node[midway,left]{$0$}}]
    [,shape=coordinate,s sep=-\pgflinewidth,edge label={node[midway,right]{$1$}}
      [,draw,text width=1cm,edge label={node[midway,left]{$0$}}]
      [,draw,text width=1cm,edge label={node[midway,right]{$1$}}]
    ]
  ]
]
\end{forest}

\end{document}

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

(수직 거리의 경우), (수평 거리의 경우) 값을 사용하면 나무 형상을 변경할 수 있습니다(해당 키에 l대한 설명은 패키지 설명서를 참조하세요). 약간의 예::l seps sep

\documentclass{article}
\usepackage{forest}

\begin{document}

\begin{forest}
for tree={parent anchor=south, child anchor=north},
for tree={l =-0ex}
[,s sep=3cm
  [,draw,text width=3cm,edge label={node[midway,above left=0pt]{$0$}}]
  [,s sep=1.5cm,shape=coordinate,edge label={node[midway,above right]{$1$}}
    [,draw,text width=2cm,edge label={node[midway,left=8pt]{$0$}}]
    [,shape=coordinate,s sep=-\pgflinewidth,edge label={node[midway,right=8pt]{$1$}}
      [,draw,text width=1cm,edge label={node[midway,left=6pt]{$0$}}]
      [,draw,text width=1cm,edge label={node[midway,right=6pt]{$1$}}]
    ]
  ]
]
\end{forest}

\end{document}

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

상자에 텍스트가 있어야 하는 경우 모든 상자의 높이가 동일하도록 스타일을 정의하는 것이 좋습니다.

\documentclass{article}
\usepackage{forest}

\begin{document}
\forestset{
myempty/.style={
  draw,
  text width=#1,
  minimum height=16pt,
  anchor=north
  }
}

\begin{forest}
for tree={parent anchor=south, child anchor=north},
for tree={l =2ex}
[,s sep=1cm
  [texta,myempty=3cm,edge label={node[midway,above left=0pt]{$0$}}]
  [,s sep=1cm,shape=coordinate,edge label={node[midway,above right]{$1$}}
    [textb,myempty=2cm,edge label={node[midway,left=8pt]{$0$}}]
    [,shape=coordinate,s sep=-\pgflinewidth,edge label={node[midway,right=8pt]{$1$}}
      [textc,myempty=1cm,edge label={node[midway,left=6pt]{$0$}}]
      [textd,myempty=1cm,edge label={node[midway,right=6pt]{$1$}}]
    ]
  ]
]
\end{forest}

\end{document}

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

관련 정보