Я прохожу курс повышения квалификации по структурам данных и алгоритмам (и изучаю новые вещи — в колледже я специализировался на информационных системах, а не на компьютерных науках, поэтому я не получил формального образования в этих вещах), и я я работал над кучами. Я немного запутался.
Насколько я понимаю, куча — это в основном полусортированное дерево, где значение каждого дочернего узла гарантированно меньше значения его родителя (предположим для этого обсуждения MinHeaps). Итак, если это дерево, то почему каждая реализация, которую я видел, использовала внутреннюю структуру, подобную массиву, вместо построения набора узлов дерева?
Мне кажется странным, что я должен запомнить, что дочерние элементы N в массиве располагаются на 2N + 1 (слева) и 2N + 2 (справа)*. Почему бы просто не создать узел со свойствами Left и Right и перейти оттуда?
*Источник: эта статья