<div dir="ltr">int maximo(map<int, int> &M) {<br>    int max_val = 0;  <br>    map<int,int> :: iterator it = M.begin();  <br>    while (it != M.end()) { // recorro el mapa <br>      max_val = max(max_val, it->second);  // si es mayor lo actualizo <br>      ++it;  <br>    }<br>    return max_val; <br>  }<br><br>  void replace_impar(tree<int> &T, map<int, int> &M, tree<int>::iterator n, int max_val) {<br>    if (*n % 2 != 0) {  // si es impar <br>      map<int,int> :: iterator it = M.find(*n);  // lo busco en el mapa <br>      if (it != M.end()) { // si lo encuentra <br>        *n = it->second;  // lo reemplazo <br>      } else {  // no esta en el mapa <br>        *n = max_val;  // reemplazo con el maximo <br>      }<br>    }<br>    tree<int>::iterator c = n.lchild(); <br>    while (c != T.end()) { // sigo recorriendo para los hijos izquierdos <br>      replace_impar(T, M, c++, max_val);<br>    }<br>  }<br>  //wrapper<br>  void replace_impar(tree<int> &T, map<int, int> &M) {<br>    int max_val = maximo(M);  // busco el maximo <br>    replace_impar(T, M, T.begin(), max_val); // desde la raiz<br>  }<br></div>