Pruning the branches in Merkle Tree In Merkle tree, leaves are actual transactions and internal nodes are hash of their childrens. In the Bitcoin paper, Satoshi talks about pruning branches in the Merkle tree to save storage space.

Under what conditions can be the branches pruned? I understand that the Merkle root is used in finding POF for the block. Are there any situations where all nodes in the Merkle tree are pruned except the root?
Sure:


A leaf (transaction) can be pruned when all of its outputs have been spent.  
A node can be pruned when both of its children have been pruned.


However, Bitcoin Core doesn't implement this kind of pruning. It was built on the assumption that you download and validate all blocks. Because of this, it operates in one of two modes:


No pruning (the default)
Don't keep old blocks or old merkle trees at all, and only track unspent outputs and their scriptPubKeys. This mode doesn't allow you to help new nodes synchronize.