Merkle tree
Also called: Merkle root, hash tree, Merkle proof, Merkle branch, hashMerkleRoot.
A Merkle tree hashes many items into one 32-byte root, so any single item can be proven to be included with a short proof instead of the whole list.
A Merkle tree, named after Ralph Merkle, is a way of hashing a list of items into a single fingerprint, the Merkle root, so that you can later prove one item is in the list without revealing the rest. Each item is hashed, then the hashes are paired and hashed together, level by level, until one hash remains.
Merkle trees in Bitcoin blocks
Every block header contains a 32-byte Merkle root of all the block's txids, computed with double SHA-256. To prove a transaction is in a block you only need the hashes along its path to the root, about log2(n) of them: for a block of 4,000 transactions that's 12 hashes, or 384 bytes. This is what makes SPV light clients possible, and BIP 37 merkleblock messages carry exactly such partial trees. SegWit added a second tree over wtxids, whose root is committed in the coinbase transaction (BIP 141).
Known quirks
Satoshi's design duplicates the last hash when a level has an odd number of entries, which lets two different transaction lists share one root (CVE-2012-2459). And because an inner node is 64 bytes of data, a 64-byte transaction can be passed off as an inner node to forge an inclusion proof. BIP 54 and BIP 53 propose making 64-byte transactions invalid, and BIP 98 describes a faster tree without these problems.
Merkle trees in scripts
Taproot (BIP 341) commits to a tree of alternative scripts using tagged hashes (TapLeaf and TapBranch). Spending reveals one script plus its path, up to 128 levels deep. This idea is known as MAST and was earlier proposed in BIP 114 and BIP 116.