Beispiel #1
0
Node* Node::inOrder(){
      
      //si el nodo derecho es nulo devuelve el izq (puede ser NULL)
      if(_right == NULL)
       return _left;
       
       //devuelve el nodo más a la izquierda del subarbol derecho
      return maxLeft(_right);
}
 int maxChunksToSorted(vector<int>& arr) {
     int n = arr.size();
     vector<int> maxLeft(n), minRight(n);
     maxLeft[0] = arr[0];
     for (int i = 1; i < n; ++i) {
         maxLeft[i] = max(maxLeft[i - 1], arr[i]);
     }
     
     minRight[n - 1] = arr[n - 1];
     for (int i = n - 2; i >= 0; --i) {
         minRight[i] = min(minRight[i + 1], arr[i]);
     }
     
     int count = 1;
     for (int i = 0; i < n - 1; ++i) {
         if (maxLeft[i] <= minRight[i + 1]) ++count;
     }
     
     return count;
 }
Beispiel #3
0
Node* Node::maxLeft(Node* n){
      if(n->getLeft() == NULL)
        return n;
      else
        return maxLeft(n);
}