Here's a diagram I created a long time ago when I was starting to illustrate BTC concepts for a presentation that I ended up not giving.
The parent of two nodes (in the diagram) is created by concatenating the two child nodes (such as "0f3e32d0af34332d") and then hashing that.
If a level has an odd number of nodes, you copy the last node. to make it even: i.e. if a level has 3 nodes: A, B, C, you just make it A,B,C,C and then carry on.