Я намагаюся довести, що двійкова купа з вузлами має рівно листя, враховуючи, що купа будується таким чином:
Кожен новий вузол вставляється через перколат вгору . Це означає, що кожен новий вузол повинен бути створений у наступної доступної дитини. Що я маю на увазі під цим, це те, що діти заповнені вниз і ліворуч праворуч. Наприклад, наступна купа:
0
/ \
1 2
буде мати , був побудований в наступному порядку: 0, 1, 2. (Числа тільки індекси, вони не дають ніяких вказівок на фактичних даних , що містяться в цьому вузлі.)
Це має два важливі наслідки:
Не може існувати вузол на рівні без рівня k повністю заповненим
Оскільки діти побудовані зліва направо, між вузлами на рівні не може бути "порожніх пробілів" або таких ситуацій:
0 / \ 1 2 / \ \ 3 4 6
(Це було б незаконною купою за моїм визначенням.) Таким чином, хороший спосіб подумати над цією купою - це реалізація масиву купи, де не може бути жодних «стрибків» в індексах масиву.
Отже, я думав, що індукція, ймовірно, буде хорошим способом зробити це ... Можливо, щось має справу з навіть дивними випадками для російської. Наприклад, деяка індукція, що використовує той факт, що навіть купи, побудовані таким чином, повинні мати внутрішній вузол з однією дитиною для парного n, а таких вузлів для непарних n немає. Ідеї?