what would happen if merkle trees didn't included in the blockchain
Then, instead of a single 256-bit number, you would have only the transaction counter in the block message, and all transactions after that.
SPV mechanism would be more difficult and less efficient, since it needs to download whole block which contain relevant TX.
If you use a hash function like SHA-256, which is based on
Merkle–Damgård construction, then things can be optimized, and then done in SPV way. For example: you can give someone the initialization vector, just before the latest SHA-256 internal block, and the last 512-bit chunk. It would be sufficient to verify, that the hash of the whole block was mined correctly.
The same about proving transaction inclusion: even if you hash all data, as a single SHA-256 call, then still: you can prove, that a chunk "X" is included, by giving the initialization vector, some chunks in-between, and a final SHA-256 result, for that specific chunk.
So, SPV would be of course harder, but still possible, because SHA-256 splits data into 512-bit chunks by definition.
Edit: With Merkle tree:
+---------------+------------------------------------------------------------------+
| version | 01000000 |
| prevBlockHash | 0000000000000000000000000000000000000000000000000000000000000000 |
| merkleRoot | 3ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a |
| time | 29ab5f49 |
| difficulty | ffff001d |
| nonce | 1dac2b7c |
+---------------+------------------------------------------------------------------+
| transactions | 01 |
+---------------+------------------------------------------------------------------+
| version | 01000000 |
| inputs | 01 |
| prevTxHash | 0000000000000000000000000000000000000000000000000000000000000000 |
| prevTxId | ffffffff |
| scriptSize | 4d |
| difficulty | 04 ffff001d |
| extraNonce | 01 04 |
| genesisData | 45 |
| | 5468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72 |
| | 206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f7220 |
| | 62616e6b73 |
| sequence | ffffffff |
| outputs | 01 |
| amount | 00f2052a01000000 |
| scriptSize | 43 |
| publicKey | 41 04 |
| | 678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb6 |
| | 49f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f |
| | ac |
| locktime | 00000000 |
+---------------+------------------------------------------------------------------+
What is hashed, and how:
+-----------------------+-------------------------------------+
| initialization vector | 6a09e667 bb67ae85 3c6ef372 a54ff53a |
| | 510e527f 9b05688c 1f83d9ab 5be0cd19 |
+-----------------------+-------------------------------------+
| first chunk | 01000000 00000000 00000000 00000000 |
| | 00000000 00000000 00000000 00000000 |
| | 00000000 3ba3edfd 7a7b12b2 7ac72c3e |
| | 67768f61 7fc81bc3 888a5132 3a9fb8aa |
+-----------------------+-------------------------------------+
| first hash | bc909a33 6358bff0 90ccac7d 1e59caa8 |
| | c3c8d8e9 4f0103c8 96b18736 4719f91b |
+-----------------------+-------------------------------------+
| second chunk | 4b1e5e4a 29ab5f49 ffff001d 1dac2b7c |
| | 80000000 00000000 00000000 00000000 |
| | 00000000 00000000 00000000 00000000 |
| | 00000000 00000000 00000000 00000280 |
+-----------------------+-------------------------------------+
| second hash | af42031e 805ff493 a07341e2 f74ff581 |
| | 49d22ab9 ba19f613 43e2c86c 71c5d66d |
+-----------------------+-------------------------------------+
+-----------------------+-------------------------------------+
| initialization vector | 6a09e667 bb67ae85 3c6ef372 a54ff53a |
| | 510e527f 9b05688c 1f83d9ab 5be0cd19 |
+-----------------------+-------------------------------------+
| third chunk | af42031e 805ff493 a07341e2 f74ff581 |
| | 49d22ab9 ba19f613 43e2c86c 71c5d66d |
| | 80000000 00000000 00000000 00000000 |
| | 00000000 00000000 00000000 00000100 |
+-----------------------+-------------------------------------+
| third hash | 6fe28c0a b6f1b372 c1a6a246 ae63f74f |
| | 931e8365 e15a089c 68d61900 00000000 |
+-----------------------+-------------------------------------+
And without Merkle tree, it would be still possible to prove data inclusion. For example: if you share with anyone, that there is a chunk of data, which starts from "bc909a33 6358bff0 90ccac7d 1e59caa8 c3c8d8e9 4f0103c8 96b18736 4719f91b", and ends with "af42031e 805ff493 a07341e2 f74ff581 49d22ab9 ba19f613 43e2c86c 71c5d66d", then, the only matching in-between data, is equal to this "second chunk". And: the size of in-between data can be arbitrarily large, you will just share the starting 256-bit value, and the ending 256-bit value, and then, you can prove, that as long as SHA-256 is safe, nobody changed anything here.