Minecraft wiki entry for Time-saving_tips, associated text: When harvesting trees from below, chop out at height 1m and 2m first, leaving the lowest block of the tree as a 'stump'. By jumping onto the stump, you can then reach one block higher into the tree without needing to make a temporary platform to stand on. This means you can farm trees one block higher than otherwise.
When farming trees, grow either birch or jungle trees. As for the jungle trees, they're very efficient when harvested as described below. Birch trees were the best option prior to the jungle tree's introduction, because they never grew taller than seven blocks and could thus completely be retrieved in the way explained above. Oak trees are particularly irregular and variable, but only they produce apples.
To harvest trees from above – this is particularly effective for the Giant Jungle Trees – get to the top of the tree, then simply chop your way down to the base. Provided you have a quick means of getting to the top of the tree (ladders, vines, ender pearls, or an elytra with firework rockets) this is the fastest method of wood harvesting, and it works on trees of any height. Note that when using ladders, they will drop as you break the logs which support them.