Reason for differences between ways of specifying trees
You're right. You need less space to save a tree with an adjacency list. But (like Dave Clarke's comment already says) there are more interesting fields, not only the space-complexity. Sometimes it is useful to spend more space to reduce for example the time-complexity of a problem. An easy example makes that point clear: If you represent your tree by saving the children of each node, you can compute the children of a given point in constant time (just looking which children are saved for the particular node). If you otherwise save the parent of each node, then you have to check every node in your tree (except the given point) to compute the children of a given node. In the first case you need more space and less time. In the second case you need less space, but more time.