def _sift_down( self, ndx ): """ Sift the value at the ndx element down the tree. """ left = 2 * ndx + 1 right = 2 * ndx + 2 # Determine which node contains the larger value, left or right. largest = ndx if left < self._count and self._elements[left] >= self._elements[largest]: largest = left if right < self._count and self._elements[right] >= self._elements[largest]: largest = right if largest != ndx: # one of the children holds larger value self._elements[largest], self._elements[ndx] = \ self._elements[ndx], self._elements[largest] self._sift_down( largest )