class BinaryTreeByLevel {

  public List<BinaryNode> getWithoutAdditionalDataStructures(BinaryNode root) {
    validateBinaryNode(root);

    List<BinaryNode> result = new LinkedList<BinaryNode>();
    int depth = getDepth(root);
    for (int i = 1; i <= depth; i++) {
      result.addAll(getNodesForLevel(root, i));
    }
    return result;
  }

}