Was my Huffman coding solution wrong?
Huffman's algorithm is actually an "algorithm scheme", that is, a specification for an entire class of algorithms. Roughly speaking, Huffman's algorithm is any instantiation of the following scheme:


  While there is more than one symbol, choose (in an unspecified way) two leaves of minimum total probability, and merge then (in an unspecified order).


Any particular instantiation will include a tie-breaking rule for choosing the two leaves, and will order them in some specific way.

In your case, there is only one choice for the two leaves, but there are several choices for the order (two at each of the three iterations of the algorithm). Hence your distribution supports 8 different "Huffman codes". It might be that the one you chose is not the canonical one which is produced by the specific implementation you were taught in class. The 8 Huffman codes for your distribution are:
$$
\begin{array}{c|l|l|l|l|l|l|l|l}
A &amp; 110 &amp; 111 &amp; 100 &amp; 101 &amp; 010 &amp; 011 &amp; 000 &amp; 001 \\\hline
B &amp; 10 &amp; 10 &amp; 11 &amp; 11 &amp; 00 &amp; 00 &amp; 01 &amp; 01\\\hline
C &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 1 &amp; 1 &amp; 1 &amp; 1 \\\hline
D &amp; 111 &amp; 110 &amp; 101 &amp; 100 &amp; 011 &amp; 010 &amp; 001 &amp; 000\\
\end{array}
$$

An important fact to be aware of is that not while Huffman's algorithm is guaranteed to produce a minimum redundancy code, not all minimum redundancy codes can be produced by Huffman's algorithm. See Gallager's classic paper Variations on a Theme by Huffman.