Binary Recherche Arbre

voix
0

Mon professeur a posté quelques questions d'examen pour l'examen final. Et je ne peux pas sembler trouver les réponses pour cela. Toute aide est la bienvenue!

Considérons un arbre binaire de n nœuds:
a. Quel est le nombre minimal et maximal des nœuds feuilles?
b. Quelle est la valeur minimale et maximale de la hauteur?
c. Combien de pointeurs sont utilisés par l'arbre (sans compter les pointeurs nuls, et en supposant que nous ne gardons pas un champ qui stocke le parent)?

*ré. Quel est le pire moment de la course de soins pour l'insertion de noeuds n dans un (initialement vide) arbre de recherche binaire?

Créé 24/05/2011 à 18:27
source utilisateur
Dans d'autres langues...                            


4 réponses

voix
0

Essayez de dessiner divers arbres sur un papier et voyez ce que vous obtenez. Rappelez-vous qu'un arbre binaire est défini comme étant un arbre où chaque noeud peut avoir 0 (auquel cas il est une feuille), 1 ou 2 enfants. Pour votre question, vous devriez examiner le cas très déséquilibré de 1 enfant par nœud.

Créé 24/05/2011 à 18:31
source utilisateur

voix
0

Considérer:

Si vous essayez de maximiser le nombre de feuilles, vous voulez que quelques noeuds internes que possible (et l'inverse si vous essayez de réduire le nombre de feuilles). Comment pouvez-vous accomplir cela?

Pour obtenir un arbre d'une hauteur maximale, vous mettrez en quelques nœuds dans chaque niveau que possible. Comment peux-tu faire ça? A l'inverse, pour la hauteur minimale, quel est le nombre maximum de nœuds que vous pouvez mettre à chaque niveau?

Combien de façons sont là pour se rendre à chaque nœud d'un arbre? Ainsi, combien de pointeurs avez-vous besoin?

Créé 24/05/2011 à 18:33
source utilisateur

voix
0

Je suppose que vous êtes soit en codage C ou C ++.

une. Un nœud, si la structure est définie comme suit: noeud struct {noeud struct * gauche, * droit; }; Vous pouvez observer que la structure peut avoir soit 0, 1 ou 2 feuilles. Ainsi, le maximum est de 2, min est 0 feuilles.

b.Minimal hauteur est égale à zéro, dans lequel seul contiendrait le nœud racine. Notez que le nœud racine ne compte pas comme une hauteur de 1. Il est aussi appelé la profondeur parfois. Voici un algorithme pour la hauteur:

    int height(struct node *tree) 
    { 
    if (tree == NULL) return 0;
    return 1 + max (height (tree->left), height (tree->right)); 
    }

En savoir plus: http://wiki.answers.com/Q/How_do_you_find_out_the_height_of_a_Binary_Search_Tree#ixzz1NIB17SkL

c. Pardonnez - moi si je prends ce la façon worng, mais je suppose si nous cartographié sur un morceau de papier, nous aimerions essayer de trouver le nombre de « liens » que nous utiliserions? Dans ce cas, ce serait simplement le nombre de noeuds dans l'arborescence -1 pour le nœud racine. Cet algorithme se trouve sur cette page http://forums.techarena.in/software-development/1147688.htm peut vous aider à : vérifier si la racine est nulle, faites passer les nœuds gauche et à droite en tant que paramètres dans la fonction.

int countnodes(Node* root)
{
    if (root == null || k<=0)
    {
      return 0;
    } else {
        return 1 + count(root.left,k-1) + count(root.right,k-1);
    }
}
// remember to subtract one at the end.
int totalnodes = countnodes(root) - 1;

ré. La complexité du temps pour le meilleur des cas est O (nlogn) où n est le nombre de noeuds à insérer. Le pire des cas, est en O (n). Il est directement linéaire.

Si vous avez d'autres questions google juste, il y a beaucoup de choses à savoir sur les arbres binaires de recherche. Mais la majeure partie est tout simplement récursion que vous pouvez apprendre en 30 secondes.

J'espère que ça aide. Bonne chance pour ton éxamen! J'ai eu le mien il y a quelques mois. ;)

Créé 24/05/2011 à 18:39
source utilisateur

voix
1

  • Le nombre maximal de feuilles est ceil (n / 2). Le nombre minimum est de 1
  • La hauteur maximale est n. Le minimum est étage (log_2 (n))
Créé 24/05/2011 à 18:44
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more