비대칭 형제가 있는 TikZtree

비대칭 형제가 있는 TikZtree

Ti에서 (이진) 트리를 정의하는 방법이 있습니까?케이형제의 두 선의 기울기가 다른 Z입니다.

각 노드를 별도로 배치하지 않고 다음과 같은 모양의 트리를 생성하고 싶습니다.

비대칭 형제가 있는 트리:

답변1

이전 답변(시나 아마디의) 중요한 조건을 충족하지 않습니다.형제의 두 선의 기울기가 다릅니다..


사용자 정의 가능한 코드:

우리는 새로운 명령을 정의합니다 \binary. 구문은 다음과 같습니다.

\binary[slope left=<num>,slope right=<num>,height=<num>] (<node>) to (<node>) node {<text>} and (<node>) node {<text>};

그것은 우리에게 줄 것이다

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

은(는 ) 에서 height온 것이 A.north아닙니다 A.south. 개선이 필요합니다.

설정은 slope left=50,slope right=35,height=0.75우리에게 제공합니다

\documentclass[tikz,margin=3mm]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\def\binary[slope left=#1,slope right=#2,height=#3] (#4) to (#5) node #6 and (#7) node #8; {
    \node (#5) at ($(#4)+({180+#1}:{#3/cos(90-(#1))})$) {#6};
    \node (#7) at ($(#4)+({-#2}:{#3/cos(90-(#2))})$) {#8};
    \draw (#5.north)--(#4.south)--(#7.north);
}
\node (A) at (0,0) {A};
\binary[slope left=50,slope right=35,height=0.75] (A) to (1) node {1} and (B) node {B};
\binary[slope left=50,slope right=35,height=0.75] (B) to (2) node {2} and (C) node {C};
\binary[slope left=50,slope right=35,height=0.75] (C) to (3) node {3} and (D) node {D};
\binary[slope left=50,slope right=35,height=0.75] (D) to (4) node {4} and (E) node {E};
\binary[slope left=50,slope right=35,height=0.75] (E) to (5) node {5} and (F) node {F};
\end{tikzpicture}
\end{document}

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

사용자 정의가 덜 필요한 코드:

약간 변경 \binary되었으며 이제 모든 노드의 레이블과 노드 이름이 동일합니다.

\documentclass[tikz,margin=3mm]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\def\binary[slope left=#1,slope right=#2,height=#3] (#4) to (#5) and (#6); {
    \node (#5) at ($(#4)+({180+#1}:{#3/cos(90-(#1))})$) {#5};
    \node (#6) at ($(#4)+({-#2}:{#3/cos(90-(#2))})$) {#6};
    \draw (#5.north)--(#4.south)--(#6.north);
}
\node (A) at (0,0) {A};
\binary[slope left=50,slope right=35,height=0.75] (A) to (1) and (B);
\binary[slope left=50,slope right=35,height=0.75] (B) to (2) and (C);
\binary[slope left=50,slope right=35,height=0.75] (C) to (3) and (D);
\binary[slope left=50,slope right=35,height=0.75] (D) to (4) and (E);
\binary[slope left=50,slope right=35,height=0.75] (E) to (5) and (F);
\end{tikzpicture}
\end{document}

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

답변2

쉽게 할 수 있는 것 forest:

\documentclass{article}
\usepackage[linguistics]{forest}
\begin{document}
\begin{forest}for tree={calign=fixed edge angles,
calign primary angle=-30,calign secondary angle=60,l=1.25cm}
[A [1] [B [2] [C [3] [D [4] [E [5] [F]]]]]]
\end{forest}
\end{document}

코드 출력

답변3

패키지를 이용하시면 됩니다 forest. 다음은 최소한의 작업 예입니다.

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{forest}

\begin{document}
\begin{forest}
[A
    [1][B
        [2][C
            [3][D
                [4][E]
                ]
            ]
        ]
    ]
]
\end{forest}
\end{document}

결과는 다음과 같습니다.

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

더 많은 사례를 찾아보실 수 있습니다여기.

관련 정보