int diskSpace(const Tree& T, const Position& v) { int s = size(v); // start with size of v PositionIterator children = T.children(v); while (children.hasNext()) s += diskSpace(T, children.next()); // add weights of subtrees if (T.isInternal(v)) cout << name(v) << ": " << s << endl; // print name and weight return s; }