original_string: public function pop()
      {
          if (count($this->_heap) == 0) {
              return null;
          }
  
          $top = $this->_heap[0];
          $lastId = count($this->_heap) - 1;
  
          /**
           * Find appropriate position for last node
           */
          $nodeId  = 0;     // Start from a top
          $childId = 1;     // First child
  
          // Choose smaller child
          if ($lastId > 2  &&  $this->_less($this->_heap[2], $this->_heap[1])) {
              $childId = 2;
          }
  
          while ($childId < $lastId  &&
                 $this->_less($this->_heap[$childId], $this->_heap[$lastId])
            ) {
              // Move child node up
              $this->_heap[$nodeId] = $this->_heap[$childId];
  
              $nodeId  = $childId;               // Go down
              $childId = ($nodeId << 1) + 1;     // First child
  
              // Choose smaller child
              if (($childId+1) < $lastId  
                  && $this->_less($this->_heap[$childId+1], $this->_heap[$childId])
              ) {
                  $childId++;
              }
          }
  
          // Move last element to the new position
          $this->_heap[$nodeId] = $this->_heap[$lastId];
          unset($this->_heap[$lastId]);
  
          return $top;
      }
code: public function pop()
      {
          if (count($this->_heap) == 0) {
              return null;
          }
  
          $top = $this->_heap[0];
          $lastId = count($this->_heap) - 1;
  
          /**
           * Find appropriate position for last node
           */
          $nodeId  = 0;     // Start from a top
          $childId = 1;     // First child
  
          // Choose smaller child
          if ($lastId > 2  &&  $this->_less($this->_heap[2], $this->_heap[1])) {
              $childId = 2;
          }
  
          while ($childId < $lastId  &&
                 $this->_less($this->_heap[$childId], $this->_heap[$lastId])
            ) {
              // Move child node up
              $this->_heap[$nodeId] = $this->_heap[$childId];
  
              $nodeId  = $childId;               // Go down
              $childId = ($nodeId << 1) + 1;     // First child
  
              // Choose smaller child
              if (($childId+1) < $lastId  
                  && $this->_less($this->_heap[$childId+1], $this->_heap[$childId])
              ) {
                  $childId++;
              }
          }
  
          // Move last element to the new position
          $this->_heap[$nodeId] = $this->_heap[$lastId];
          unset($this->_heap[$lastId]);
  
          return $top;
      }
code_tokens: public function pop ( ) { if ( count ( $ this -> _heap ) == 0 ) { return null ; } $ top = $ this -> _heap [ 0 ] ; $ lastId = count ( $ this -> _heap ) - 1 ; /**
           * Find appropriate position for last node
           */ $ nodeId = 0 ; // Start from a top $ childId = 1 ; // First child // Choose smaller child if ( $ lastId > 2 && $ this -> _less ( $ this -> _heap [ 2 ] , $ this -> _heap [ 1 ] ) ) { $ childId = 2 ; } while ( $ childId < $ lastId && $ this -> _less ( $ this -> _heap [ $ childId ] , $ this -> _heap [ $ lastId ] ) ) { // Move child node up $ this -> _heap [ $ nodeId ] = $ this -> _heap [ $ childId ] ; $ nodeId = $ childId ; // Go down $ childId = ( $ nodeId << 1 ) + 1 ; // First child // Choose smaller child if ( ( $ childId + 1 ) < $ lastId && $ this -> _less ( $ this -> _heap [ $ childId + 1 ] , $ this -> _heap [ $ childId ] ) ) { $ childId ++ ; } } // Move last element to the new position $ this -> _heap [ $ nodeId ] = $ this -> _heap [ $ lastId ] ; unset ( $ this -> _heap [ $ lastId ] ) ; return $ top ; }
docstring: Removes and return least element of the queue
  
  O(log(N)) time
  
  @return mixed
docstring_tokens: Removes and return least element of the queue