В предзаказа обходе, вы обрабатываете родитель первым, то вы рекурсивно обрабатывать левое поддерево и правое поддерево. Представление, которое у вас есть, в основном такое же, как у кучи, поэтому ясно, что представляют собой левый и правый дети любого узла. Это означает, что мы можем выполнить это в предварительном порядке и распечатать узлы в том порядке, в котором мы их посещаем.
Псевдокод будет выглядеть следующим образом:
print_pre_order(index):
if index is beyond the size of the array:
return
else:
print value at index
print_pre_order(left child of index)
print_pre_order(right child of index)
Так как это устроено как кучи, для каждого индекса п левый ребенок находится в 2 * п и право ребенок на 2 * (п +1). Обратите внимание, что я предполагаю, что индексы массива начинаются с 1 (хотя большинство языков у них начинается с 0), но вы можете легко адаптировать их для массивов на основе 0.
Что является родителем 7? Пожалуйста, добавьте дополнительную информацию. Это как куча, где дети n-го элемента находятся в положениях 2 ** n и 2 ** (n + 1)? (Предполагая, что индексы начинаются с 1) – MAK
7 - лист, его полное двоичное дерево. –
это домашняя работа? –