public static int diskSpace (Tree T, Position v) {
    int s = size(v);		// start with the size of the node itself
    Iterator children = T.children(v);
    while (children.hasNext()) {
      // add the recursively computed space used by the children of v
      s += diskSpace(T, (Position) children.next());
      }
    if (T.isInternal(v)) {
      // print name and disk space used
      System.out.print(name(v) + ": " + s);
      }
    return s;
  }