You can use fit
. Just name
the nodes you want to enclose. You can adjust rotate
, xscale
, yscale
and shift
for a more precise fit.

\documentclass[a4paper,12pt, twoside]{report}
\usepackage{tikz-cd}
\usepackage[linguistics]{forest}
\begin{document}
\begin{forest}
for tree={s sep=10mm, inner sep=0, l=0}
[MoodP
[AspP, name=C
[Asp, name=E]
[InitP
[Init]
[ProcP
[Proc, name=F] [State, name=D]]]]
[MoodP, name=A
[Mood, name=B][,phantom]
]
]
\node[draw, ellipse, rotate=-50, xscale=.5, fit = {(A) (B)}]{};
\node[draw, ellipse, rotate=47, xscale=.4, yscale=1.2, fit = {(C) (D) (E) (F)}, shift={(-.7,-.1)}]{};
\end{forest}
\end{document}
If you want true circles, you'll have to change the geometry of your tree a bit. For example:

\documentclass[a4paper,12pt, twoside]{report}
\usepackage{tikz-cd}
\usepackage[linguistics]{forest}
\begin{document}
\begin{forest}
for tree={s sep=2cm, inner sep=0, l sep=1cm}
[MoodP, s sep=4cm
[AspP
[Asp, name=E]
[InitP
[Init]
[ProcP
[Proc, name=F] [State, name=D]]]]
[MoodP, name=A
[Mood, name=B][,phantom]
]
]
\node[draw, circle, fit = {(A) (B)}]{};
\node[draw, circle, fit = {(D) (E) (F)}]{};
\end{forest}
\end{document}