Возвращаемые значения
Пожалуйста, не делайте этого:
int distance;
return distance = closeLeaf(root);
Просто:
return closeLeaf(root);
На реальный вопрос
Здесьвы складываете расстояние до каждого листа:
dist = closeLeaf(n.getLeft()) + closeLeaf(n.getRight());
Возможно, вы просто хотите получить минимум двух значений (чтобы указать расстояние до ближайшего).