В размещенной в нуле куче, размещенной в массиве, размером n
, где n > 0
остается верным, если любой индекс родительского узла i
такой, что i
находится в [0,n-1]
, где n
- эточисло узлов кучи, соответствующие дочерние узлы могут быть найдены в:
2 * i + 1
2 * (i + 1)
в том случае, когда каждый из вышеперечисленных аналогично в [0,n-1]
Учитывая, что можно определить первый узел, который действительно не имеет возможных дочерних узлов (и, следовательно, является конечными узлами с этой точки в куче), беря размер кучи, вычитая единицу для учета модели индексации на основе нуля, затем целочисленнуюделится на два.
Учитывая кучу размера 7, уравнение дает 3. И это имеет смысл, потому что, учитывая индексы
0 1 2 3 4 5 6
, мы знаем, что
- 0 является родительским1,2
- 1 является родителем 3,4
- 2 является родителем 5,6
Следовательно, первый узел, который будет иметь дочерних элементов в дереве - 3. Условие, которое вы задаете, просто определяет, меньше ли узел этой позиции, и если это так, предпримите дальнейшие действия;в противном случае остановитесь.