Определение размера идеального четырехугольного дерева

StackOverflow https://stackoverflow.com/questions/4846357

Вопрос

Мне нужно найти размер идеального четырехугольного дерева. Это означает, что у меня есть 1 корневой узел, который разделяется на 4 узла, который разделяется на 4 узла и т. Д.

поэтому квадратное дерево высотой 1 будет иметь размер 1 высота 2= размер 5 (1 + 4) высота 3= размер 21 (1 + 4 + 16) высота 4= размер 85 (1 + 4 + 16 + 64)

и т. д.

Я знаю, что размер идеального двоичного дерева можно определить с помощью: size= 2 ^ (height + 1) -1 Поэтому я считаю, что аналогичное уравнение существует для дерева квадратов.

Так что это?

Это было полезно?

Решение

Это геометрическая серия .Итак, соответствующая формула:

Genracodicetagpre

где a - это первое значение, r - это общее соотношение, n - количество терминов, а ^ обозначает "в степени".

Другие советы

Для дерева квадратов алгоритм

Genracodicetagpre

Например, с глубиной 3 вы получите

Genracodicetagpre

а если сосчитать три слоя, то получится

Genracodicetagpre

В своей реализации я даже разделил его на два массива где размер всех узлов, которые не покидают узлы, составляет

Genracodicetagpre

и оставить узлы

Genracodicetagpre

Я выполняю эти вычисления во время компиляции с помощью метапрограммирования для pow и аргумента шаблона для глубины.Поэтому я просто размещаю свои узлы в двух массивах.

На всякий случай кому-нибудь понадобится образец кода (в swift3)

Genracodicetagpre
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top