Construct a DFA from the regular expression (a)*+(aab)*
The approach of combining two smaller DFAs is right. However, it is not correct to superimpose one DFA on another simply. For example, your combined DFA accepts $aaab$, which is not included in $a^*+(aab)^*$.

The correct way to combine two DFAs so as to produce the union of their languages is to construct the product automaton of them, defining the new final states appropriately. Please check this question and answer for details.

For the current case, we can use more states in the DFA so that it remembers more about the input string and it is deterministic enough to stipulate each transition.

$$\begin{aligned}
q_0&amp;: \text{for the empty string}.\\  
q_{a}&amp;: \text{for string }a.\\  
q_{aa}&amp;: \text{for string }aa.\\  
q_{aaaa^*}&amp;: \text{for strings } aaa, aaaa, \cdots.\\  
q_{aab(aab)^*}&amp;: \text{for strings } aab, aabaab, \cdots.\\  
q_{aab(aab)^*a}&amp;: \text{for strings } aaba, aabaaba, \cdots.\\  
q_{aab(aab)^*aa}&amp;: \text{for strings } aabaa, aabaabaa, \cdots.\\  
q_{\text{reject}}&amp;: \text{for all other strings.}\\
\end{aligned}$$

$q_0$ is the initial state. $q_0, q_{a}, q_{aa}, q_{aaaa^*}$ and $q_{aab(aab)^*}$ are accept states. $q_{reject}$ is a dead state.