Why use Merkle Root (and not just concatonation of all hashes?) I am studying the bitcoin protocol and do not exactly understand why a Merkle root is used to register all the transactions. What is the point of using a tree-wise structure when you can also just take a hash over the concatenation of all transactions hashes? As far as I see, that would be less operations and therefore only more efficient?
The Merkle tree structure is essential for section 7 (Reclaiming Disk Space) and section 8 (Simplified Payment Verification) in the whitepaper.

With simple concatenation, the only way to be convinced that a transaction exists in a block is to have access to the hashes of all transactions, which requires a lot of storage space.

With a Merkle tree you can:


Prune large parts of the history, and still know that the data left intact is a legitimate part of the block.
Convince a specific node that a transaction exists in a block, by showing the Merkle branch.


Merkle trees are also used in pooled mining, allowing the miner to construct the generation transaction independently while the pool or another node builds the bulk of the block.

Some more details are in this answer.