Igloos have a 70.4% chance to have 1-3 apples in the basement chest, as well as the guaranteed Golden Apple already in there.
You are also very likely to get apples from generic plains village chests, at a 74.2% for 1-5, with Weaponsmith chests in all village types giving 1-3 on a 55% chance. Sam's simulation shows the chance of getting at least 1 apple per village from village chests are:
Plains: 69.4%
Desert: 12.1%
Savanna: 3.1%
Snowy: 10.8%
Taiga: 27.2%
Though you can just trade for an apple instead (see below).
Lastly, Stronghold chests can have apples too, as a 47.5% chance from the 'store' chest (see image below) and a 32.9% chance from altar chest. A stronghold with all 4 altar chests will have at least 1 apple 79.73% of the time.
Dark Oak and Oak leaves have a 0.5% chance to drop 1 apple when decaying or broken by the player. This means Pale Oak leaves never drop apples, nor Azalea leaves (despite their trees using oak logs). This is around 1 in 200, so if an Oak Tree has 56 leaves, you should get 1 apple for every 3.57 trees you fully shave (NB Balloon trees and Fancy Oaks have more leaves).
Using an Iron Hoe or better will insta-break leaves, drastically increasing the rate at which you can get an apple. If you're in a Jungle, the Jungle Bushes on the floor and Fancy Oaks have oak leaves that can drop apples. While you can get an Oak Tree in trial chambers, this is already only a 22.2% chance, and on top of that, the chance you get an apple from the 25 leaves is 11.78%, meaning apple from Trial Chamber is a 2.6% chance.
You can also use TNT to blow up the leaves, which can overlap with getting wood.
An Apprentice farmer has a 66.67% chance to offer 4 apples for an emerald. Levelling up a farmer can be broadly categorised into 3 cases.
(1) Wheat Only
This requires 5 trades, which is 12 hay bales' worth of wheat (8 wheat left over). You will end up with an Apprentice farmer and 5 emeralds, 1 of which you can hopefully spend to get your apple. (For goals like compost X, an apprentice farmer is guaranteed at least 1 of Apple or Pumpkin Pie trade, if you only needed 1 more.)
(2) Bread Only
Novice farmers can sell 6 bread for 1 emerald, though this trade gives half the levelling experience as the other trades. You need 11 emeralds to level up a Novice farmer on this trade alone and have 1 left over for the apple, but one benefit is that you end up with 60 bread to use as a food source.
(3) Wheat and Bread
10% of Novice villagers will have both the Wheat trade and the Bread trade. In this situation you can save on hay by selling 4 wheat trades and buying 2 bread trades. This only requires 9 hay bales' worth of wheat, and because you trade back for bread, you only 'waste' 44 wheat rather than the 100 (though on method (1) you have more emeralds which you can possibly use for other goals or for Pumpkin Pie).