No, you don't. The problem is that you aren't checking that each Branch actually exists: so when you get this far:
List[i].Left.
the Left Branch is null - so when you try to use it you get an exception. This isn't a fault: a null would be normal to indicate "end of tree".
What you need to look at doing is something like:
Branch left = List[i].Left;
Branch right = List[i].Right;
if (left != null)
{
...
}
if (right != null)
{
...
}
I'd also suggest that you create a "PrintNode" method and use recursion to follow the Left and then Right branches until you get to the null value indicating "no more nodes"