Обновлять:
Я сделал следующее:
\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}