\begin{center}
\begin{forest}
for tree={circle, draw, no edge,
            minimum size=2em,
            inner sep=0pt,
            s sep=2mm,
            l sep=4mm}
[$f$, rectangle, draw,  tikz={\draw [line] () to (a.north);}
    [$a$, name=a, tikz={\draw [line] () to node[pos=.7, above] {\scriptsize T \;} (b.north east); \draw [dot=.5] () to node[pos=.5, above] {\; \scriptsize E} (c2.north west);}
        [$b$, name=b, tikz={\draw [dot=.5, bend left] () to node[pos=.5, right] {\scriptsize E \;} (c1.north east); \draw [line, bend right] () to node[pos=.5, left] {\; \scriptsize T} (c1.north west);}
            [$c$, name=c1, s sep=20mm, tikz={\draw [line] () to node[pos=.7, left] {\scriptsize T \;} (one.north); \draw [dot=.5] () to node[pos=.5, above] {\; \scriptsize E} (e.north west);}
                [,phantom]
                [$e$, name=e, s sep=10mm, tikz={\draw [line, bend left] () to node[pos=.7, above] {\scriptsize T \;} (one.north east); \draw [dot=.5, bend left] () to node[pos=.2, below] {\; \scriptsize E} (one.east);}
                    [$1$, rectangle, draw, name=one]
                    [$0$, rectangle, draw, name=zero]
                ]
            ]
        ]
        [$c$, name=c2, tikz={\draw [line, bend right] () to node[pos=.3, above] {\scriptsize T \;} (e.north); \draw [dot=.5, bend left] () to node[pos=.5, above] {\; \scriptsize E} (d.north);}
            [,phantom]
            [$d$, name=d, tikz={\draw [line] () to node[pos=.7, above] {\scriptsize T \;} (e.north east); \draw[dot=.5] () to node[pos=.3, below] {\; \scriptsize E} (zero.north);
}
                [,phantom]
                [,phantom]
            ]
        ]
    ]
]
\end{forest}
\end{center}

A binary decision diagram represents a Boolean formula $f$. It is a DAG with two terminal nodes that are
labelled with 0 and 1. The internal nodes are labelled with the Boolean variables
of the formula (here a, b, c, d and e). Each internal node has exactly two outgoing
edges: one edge labeled with a T (the then-edge), and another edge that
is labeled with an E (the else-edge) or marked with a circle. There is a unique
initial node called the function node labeled with $f$ that does not have any incoming edges and one outgoing edge to the internal variable node on the first
level.
