void buildTree()

in simple_game/cfr_opt.h [259:289]


    void buildTree(InfoSets &infos, const rela::Env &g) {
      // std::cout << "State: " << g.info() << std::endl;
      auto spec = g.spec();
      int numPlayer = spec.players.size();

      if (g.terminated()) {
        u_.resize(numPlayer, 0.0f);
        for (int i = 0; i < numPlayer; ++i) {
          u_[i] = g.playerReward(i);
        }
        return;
      }

      legalActions_ = g.legalActions();
      int numAction = (int)legalActions_.size();

      info_ = infos.getInfoSet(g);
      children_.resize(numAction);
      u_.resize(numPlayer);

      // Preallocate memory;
      regret_.resize(numAction);
      nextReachPr_.resize(numPlayer);

      for (int i = 0; i < numAction; ++i) {
        std::unique_ptr<rela::Env> g_next = g.clone();
        assert(g_next != nullptr);
        g_next->step(legalActions_[i].first);
        children_[i].buildTree(infos, *g_next);
      }
    }