package fr.univamu.progav.td1;

import java.util.ArrayList;
import java.util.List;

public class BreadthFirstSearch {

  public interface Tree {
    int getValue();
    List<Tree> getChildren();
  }

  private List<Integer> orderedValue = new ArrayList<>();

  public  BreadthFirstSearch(Tree root) {
    List<Tree> currentLevel = new ArrayList<>();
    currentLevel.add(root);
    while (!currentLevel.isEmpty()) {
      List<Tree> nextLevel = new ArrayList<>();
      for (Tree tree : currentLevel) {
        orderedValue.add(tree.getValue());
        for (Tree child : tree.getChildren()) {
           nextLevel.add(child);
        }
      }
      currentLevel = nextLevel;
    }
  }

  public List<Integer> getOrderedValue() {
    return orderedValue;
  }
}