Your code has the property that if you reverse all codewords, then you get a prefix code. This implies that your code is uniquely decodable.
Indeed, consider any code $C = x_1,\ldots,x_n$ whose reverse $C^R := x_1^R,\ldots,x_n^R$ is uniquely decodable. I claim that $C$ is also uniquely decodable. This is because
$$
w = x_{i_1} \ldots x_{i_m} \text{ if and only if } w^R = x_{i_m}^R \ldots x_{i_1}^R.
$$
In words, decompositions of $w$ into codewords of $C$ are in one-to-one correspondence with decompositions of $w^R$ into codewords of $C^R$. Since the latter are unique, so are the former.
Since prefix codes are uniquely decodable, it follows that the reverse of a prefix code is also uniquely decodable. This is the case in your example.
The McMillan inequality states that if $C$ is uniquely decodable then
$$
\sum_{i=1}^n 2^{-|x_i|} \leq 1.
$$
In other words, a uniquely decodable code satisfies Kraft's inequality. Therefore if all you're interested in is minimizing the expected codeword length, there is no reason to look beyond prefix codes.
Sam Roweis gives in his slides a nice example of a uniquely decodable code which is neither a prefix code nor the reverse of a prefix code:
$$
0,01,110.
$$
In order to show that this code is uniquely decodable, it suffices to show how to decode the first codeword of a word. If the word starts with a $1$, then the first codeword is $110$. If it is of the form $01^*$, then it must be either $0$ or $01$. Otherwise, there must be a prefix of the form $01^*0$. We now distinguish several cases:
$$
\begin{array}{c|cccc}
\text{prefix} & 00 & 010 & 0110 & 01110 \\\hline
\text{codeword} & 0 & 01 & 0 & 01
\end{array}
$$
Longer runs of $1$ cannot be decoded at all.
Do you understand what they mean by its reverse?
– 2000mroliver Mar 03 '19 at 13:47c
may be a prefix ofb
andf
, but the suffixes that are left over don't exist in the code. When you reverse the code, suffixes become prefixes, and then it becomes prefix-free. – Barmar Mar 04 '19 at 17:12