This is a brute force solution. It should be possible to fully automatize this, i.e. let forest do everything, but I really do not know what the rules for the Stern-Brocot diagram are.
\documentclass{article}
\usepackage{forest}
\begin{document}
\begin{forest}
for tree={alias/.wrap pgfmath arg={a-#1}{id},
%label/.wrap pgfmath arg={[gray,font=\tiny,inner sep=0pt]above:#1}{id}
}
[$\frac{1}{1}$
[$\frac{1}{2}$
[$\frac{1}{3}$
[$\frac{1}{4}$
[$\frac{1}{5}$]
[$\frac{2}{7}$] ]
[$\frac{2}{5}$
[$\frac{3}{8}$]
[$\frac{3}{7}$] ] ]
[$\frac{2}{3}$
[$\frac{3}{5}$
[$\frac{4}{7}$]
[$\frac{5}{8}$] ]
[$\frac{3}{4}$
[$\frac{5}{7}$]
[$\frac{4}{5}$] ] ] ]
[$\frac{2}{1}$
[$\frac{3}{2}$
[$\frac{4}{3}$
[$\frac{5}{4}$]
[$\frac{7}{5}$] ]
[$\frac{5}{3}$
[$\frac{8}{5}$]
[$\frac{7}{4}$] ] ]
[$\frac{3}{1}$
[$\frac{5}{2}$
[$\frac{7}{3}$]
[$\frac{8}{3}$] ]
[$\frac{4}{1}$
[$\frac{7}{2}$]
[$\frac{5}{1}$] ] ] ] ] ]
\path (current bounding box.north west) node[below right] (tl) {$\frac{0}{1}$}
(tl) foreach \x in {2,...,6} {edge (a-\x)}
(current bounding box.north east) node[below right] (tr) {$\frac{1}{1}$}
(tr) foreach \x in {2,18,26,30,32} {edge (a-\x)}
(a-2) foreach \x in {11,15,17,19,20,21} {edge (a-\x)}
(a-3) foreach \x in {8,10,12,13} {edge (a-\x)}
(a-4) foreach \x in {7,9} {edge (a-\x)}
(a-11) foreach \x in {14,16} {edge (a-\x)}
(a-18) foreach \x in {23,25,27,28} {edge (a-\x)}
(a-19) foreach \x in {22,24} {edge (a-\x)}
(a-26) foreach \x in {29,31} {edge (a-\x)};
\end{forest}
\end{document}
If you uncomment
%label/.wrap pgfmath arg={[gray,font=\tiny,inner sep=0pt]above:#1}{id}
you will see where all the magic numbers come from:
One could optimize this (obvious options include math content
), but given that there is surely a logic behind this diagram, it appears a bit unmotivated to seek a partial improvement.