Comment puis-je supprimer un nœud d'un BST?
J'ai besoin d'un algorithme pour le faire dans le Dr Scheme.
Comment puis-je supprimer un nœud d'un BST?
J'ai besoin d'un algorithme pour le faire dans le Dr Scheme.
En supposant que votre arbre de recherche binaire utilise tout droit cellules contre avec le contenu que sur les feuilles, et en supposant que vous travaillez sur une tâche de travail: Vous pouvez utiliser set-car!ou set-cdr!modifier le contenu d'une cellule de contre.
Vous remuez essentiellement la BST que vous avez maintenant, et de créer un nouveau sans l'élément.
Vous pouvez le faire par récursive en descendant l'arbre. Si votre article est inférieure à la donnée racine, créez un BST dont la racine et plus-que la branche est copiée à partir de ce que vous avez maintenant, mais dont moins que la branche est le résultat d'un appel récursif.
Il est très similaire à la façon dont vous ajoutez un nœud, mais quand vous arrivez à celui que vous recherchez, fusionner les deux BSTS ci-dessous et retourner le résultat. Il y a sûrement des questions existantes sur la façon de le faire déjà.