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.
![](https://ip.bitcointalk.org/?u=http%3A%2F%2Fdl.dropbox.com%2Fu%2F1139081%2FBitcoinShare%2FBlockchainFlowChart.png&t=665&c=m2E6AKeri2K-zw)