2017-07-14 5 views
0

Y a-t-il une fonction pour calculer la taille du tas (la taille maximale et la taille minimale du tas) d'un tas dans le dernier niveau?Calculer l'état du tas dans le dernier niveau d'un tas

Par exemple, lorsque l'HEAPSIZE est 128.

Est-ce le HEAPSIZE 128, quand j'ai 128 noeuds dans un arbre binaire?

+0

Demandez-vous sur la structure de données de tas binaire? – DAle

+0

Oui. @DAle. Y a-t-il différentes structures de données de tas? Je pensais que c'est toujours un arbre binaire? – flowers1234

+0

https://en.wikipedia.org/wiki/Heap_(data_structure)#Variants – DAle

Répondre

1

Un tas binaire est un complete binary tree. Cela nous donne la possibilité de trouver le nombre de niveaux de la taille du tas:
enter image description here
taille minimale du tas est 2^k, maximale est 2^(k+1)-1 avec k niveaux (height(H) == k-1).

+0

Merci! . @Vallée. Mais quand j'ai la taille 128. Comment devrait être le calcul avec votre explication pour le maximum. ** 2^(128 + 1) -1 **? mais 128 n'est pas * k ** dans mon exemple:/ – flowers1234

+0

@ flowers1234 Qu'est-ce qu'un 'heapsize'? Un certain nombre d'éléments dans le tas? – DAle

+0

Je pense que c'est le nombre de nœuds. Donc, avec _k_, nous entendons la hauteur d'un tas. Et donc je dois savoir combien de niveaux mon arbre a avec 128 nœuds, non? . Et puis je peux calculer les nombres maximums dans mon dernier niveau avec le formulé '2^(k + 1) -1'? Désolé, pour les circonstances. @DAle – flowers1234