Réseau d'arbres binaires de recherche avec héritage et polymorphisme
Python
Hard
classes
Tâche «Réseau d'arbres binaires de recherche avec héritage et polymorphisme»
Implémentez la classe Node pour un nœud d'arbre binaire de recherche (BST) avec les méthodes insert, search, delete. Créez la classe BST qui stocke la racine et contient les méthodes insert (ajout d'une valeur), search (recherche d'une valeur, retourne True/False), delete (suppression d'une valeur) et get_height (hauteur de l'arbre). Créez ensuite la classe AVLTree, héritant de BST, redéfinissant insert et delete pour prendre en charge l'équilibrage (avec rotations). Données d'entrée : une séquence de commandes. Commandes : "insert x" ajouter x, "delete x" supprimer x (si présent), "search x" afficher "found" ou "not found", "height" afficher la hauteur de l'arbre. Pour AVLTree, après chaque insertion/suppression, l'équilibre est vérifié (différence de hauteur des sous-arbres <= 1) et la rotation correspondante est effectuée. Contraintes : -10^9 <= x <= 10^9, nombre de commandes jusqu'à 10^5.
Format d\ entrée
Première ligne : un entier n (1 <= n <= 10^5) — le nombre de commandes. Ensuite n lignes, chacune contient une commande : insert x, delete x, search x ou height.
Format de sortie
Pour chaque commande search, affichez "found" ou "not found" sur une ligne séparée. Pour la commande height, affichez un entier — la hauteur de l'arbre (hauteur d'un arbre vide = 0).
Exemples
Exemple 1
ENTRÉE
3
1 2 -3 4
-1 -2
5 0 3
SORTIE
Exemple 2
ENTRÉE
2
0 0 0
2 -2 2 -2
SORTIE
main.py