The tree-drawing problem\\/ is to produce a `tidy' mapping of elements of a tree to points in the plane. In this paper, we derive an efficient algorithm for producing tidy drawings of trees. The specification, the starting point for the derivations, consists of a collection of intuitively appealing criteria\\/ satisfied by tidy drawings. The derivation shows constructively that these criteria completely determine the drawing. Indeed, there is essentially only one reasonable drawing algorithm satisfying the criteria; its development is almost mechanical. The algorithm consists of an upwards accumulation\\/ followed by a downwards accumulation\\/ on the tree, and is further evidence of the utility of these two higher-order tree operation...