Comment vérifier si mon arbre AVL de la mise en œuvre est correcte?

les gars.
Je pense que j'ai créé un arbre AVL de mise en œuvre, mais comme Arbre AVL est une structure assez complexe, j'ai besoin de le tester. Donc la question est - comment puis-je le tester? Avez-vous des idées?
Jusqu'à ce moment, j'ai les tests suivants:

  1. de base sanity check - vérifie que
    pour chaque nœud de la hauteur est égale à max.
    taille de l'enfant noeuds + 1, l'équilibre est dans [-1, 1], à gauche de l'enfant
    touche < de ce nœud de clé < droit
    l'enfant est la clé, et il n'y a pas
    les références circulaires (comme la gauche de l'enfant
    d'un nœud est un nœud lui-même);
  2. vérifier que afinde traversée sur un arbre AVL
    (et sur un arbre de recherche binaire dans l'ensemble)
    seront les valeurs de retour de l'ensemble sous-jacent dans l'ordre;
  3. vérifier qu'un arbre AVL de hauteur est strictement inférieur à
    1.44*log2(N+2)-1 (N est le nombre d'éléments) - prouvé par AVL arbres créateurs;
  4. contrôle visuel - ne fonctionne pas, j'essaie de dessiner un arbre (rootnode dans la première ligne, ses enfants directs sur la ligne suivante, les enfants de rootnode directe des enfants sur la troisième ligne et ainsi de suite), mais qui ne fonctionne que sur de petits arbres, de grands arbres, il devient un désordre complet;
  5. (?????) Wikipédia en russe dit qu'il est prouvé expérimentalement, que pour deux insertions d'un rééquilibrage nécessaire et pour cinq déménagements également un rééquilibrage nécessaire, mais est-ce vraiment le cas? Version anglaise de wikipédia ne dit rien à ce sujet, et pour mon AVL un rééquilibrage nécessaire pour les deux insertions ou pour quatre déménagements, ce qui n'est pas tout à fait la même.

Peut-être que ces tests sont suffisants, mais si il y a plus de tests, pas difficile à mettre en œuvre, pourquoi ne pas le faire?

5 en général n'est pas vrai, alors il doit être, dans certaines circonstances (en moyenne pour les données aléatoires?). Chercher l'équilibre de toute l'arbre, si vous double arbre en insérant les nœuds de profondeur 1er (pousser l'arbre de la racine vers les feuilles d'un niveau à la fois), l'arbre ne sera pas besoin d'un rééquilibrage.
J'ai vérifié avec mon AVL monte-carlo test, le ratio des inserts inserts rééquilibrage est de 2:1 (~10% d'erreur) et les suppressions d'supprime ce rééquilibrage est de 4:1 (~5% d'erreur) pour 5 millions de dollars des opérations aléatoires.

OriginalL'auteur Graf | 2010-10-17