I am drawing a tree and this is my effort below. It works OK except I would like 8 to be the left child of 5 (not drawn straight below it) and 10 to the right child of 8 (not drawn straight below it). How can I do that?
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[sibling distance=8em,
every node/.style = {shape=circle,
draw, align=center}]]
\node {1}
child { node {3}
child { node {9}}
child { node {7}}}
child { node {5}
child { node {8}
child { node {10}
child { node {12}}
child { node {15}
child { node {20}}
child {node {18}
}}}}};
\end{tikzpicture}
child {edge from parent[draw=none]}
at the correct height of the tree. And of course add more horizontal space between nodes because they will overlap.