From the whitepaper, The first step in in verifying block validity is:
Check if the previous block referenced by the block exists and is valid.
With regard to a merkle tree propogating change upwards upon a change in any of the comprised notes:
The reason why this works is that hashes propagate upward: if a malicious user attempts to swap in a fake transaction into the bottom of a Merkle tree, this change will cause a change in the node above, and then a change in the node above that, finally changing the root of the tree and therefore the hash of the block, causing the protocol to register it as a completely different block (almost certainly with an invalid proof of work).
Would it not be possible to make a change in the merkle tree such that the present block being verified does not change and hence, is Valid.