As per my understanding, Merkle tree is applied in case of transactions. Through Merkle tree we generate root hash transaction from all the transaction present in a block. So does it work the same way for block as well like there is a root hash block generated from all the blocks.
Currently, this is not the case. The blockchain can be considered a linearized branch of a tree, but the Merkle root of this tree is never constant. It is not a proper Merkle tree. The only reason that block hashes would be put into a Merkle tree is the implementation of sharding, where smaller blockchains have their blocks (alternatively, "collations") put into a tree, and this tree is put onto the a block on the master chain which handles both disputes and cross-universe transactions. Someone with access to the master chain block hash and an SPV proof would do as follows:
- Determine which collation(s) must be verified.
- Construct as many Merkle branches required (typically only one or two)
- Validate the complement hashes to check if the collation hash matches with the master Merkle root.
- Compute the block hash and check if it is consistent with the known block hash.
- Determine which transaction(s) must be verified.
- Construct as many Merkle branches required (can be any number)
- Validate the complement hashes to check if the transaction hash matches the collation Merkle root.
- Calculate the collation hash. Check if it matches the previously verified collation hash in steps 2/3.
If all checks pass, then a transaction is part of both the subchain and the master chain. Merkle trees can be used to alleviate user and contract actions from the main chain by splitting it into universes while using the main chain to finalize state transitions and facilitate actions between these subchains using transactions and receipts.
Sharding does not yet exist on Ethereum. Implementing it would require a network upgrade.
Yes it's applicable in a sense that you could do it yourself if you need to for some purposes. However it's not done in Bitcoin or Ethereum as there is no benefit of having the Merkle tree of blocks. For the case of transactions the Merkle tree is used to verify that a particular transaction is included in a particular block only having the block header and a subset of transactions participating in calculating the Merkle root hash. For the case of blocks you need to check the PoW hash along with some other validation rules to verify that a block is part of a blockchain.