Tikz でいくつかの追加を行ったツリー

Tikz でいくつかの追加を行ったツリー

アップデート:

私がやったことはこれです:

\documentclass{article} 
\usepackage{tikz}
\usetikzlibrary{trees}
\begin{document}
\begin{tikzpicture}[level distance=1.5cm,
  level 1/.style={sibling distance=3cm},
  level 2/.style={sibling distance=1.5cm}]
  \node {16}
    child {node {14}
      child {node [red] {4}
            child {node {2}}
            child {node {8}}
        }
      child {node [circle, draw, red] {7}
            child {node {1}}
        }
    }
    child {node {10}
    child {node {9}}
      child {node {3}}
    };
\end{tikzpicture}
\end{document}

これにより、次のものが生成されます。 ここに画像の説明を入力してください

私はtikzにかなり不慣れで、木を描くためのさまざまなパッケージがあることを知りました。「forest」を使用するのが最善かどうかはわかりません。

元の質問:

添付画像の内容を tikz で再現するのを手伝ってくれる人はいませんか? よろしくお願いします。 ここに画像の説明を入力してください

答え1

一般的に、TikZ の基本的なツリー メソッドは柔軟性が最も低く、構文も実用的ではありません。この種のツリーを描画するには、forestパッケージをお勧めします。これにより、このツリーを非常に簡単に描画できます。

\documentclass{article}
\usepackage[linguistics]{forest}
\newcommand{\lbl}[2][red]{{\color{#1}^#2}}
\begin{document}
\begin{forest}for tree=math content
[\lbl{1}16 
    [\lbl{2}14,name=14 
        [4,red,name=4 
            [2] 
            [8] 
        ] 
        [7,draw=red,circle 
            [1]
        ]
    ] 
    [\lbl{3}10,name=10 
        [\lbl{6}9 ] 
        [3,name=3]
    ]
]
\node [left of=4] (i) {i};
\draw[->] (i) -- (4);
\node[draw,fit=(i) (4)] {};
\node[draw,dashed,ellipse,rotate=45,fit=(10.north) (3)]{};
\draw[<->,] (4.north west) to[bend left] (14.south west);
\node [above of=i] {exchange};
\end{forest}
\end{document}

コードの出力

関連情報