Comment puis-je supprimer à partir d'un arbre de recherche binaire dans Lisp

voix
1

Comment puis-je supprimer un nœud d'un BST?

J'ai besoin d'un algorithme pour le faire dans le Dr Scheme.

Créé 07/12/2010 à 09:09
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
2

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.

Créé 07/12/2010 à 14:51
source utilisateur

voix
3

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à.

Créé 08/12/2010 à 03:09
source utilisateur

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