Je ne comprends pas cet algorithme exemple binaire arbre de recherche (BST)

voix
2

Dans le code de suppression d' ici .

Je ne comprends pas le premier extrait de code de suppression (où le nœud n'a pas deux enfants).

Si le nœud suppression a un parent et un enfant lui-même (à savoir le noeud a un enfant), comment cela fonctionne?

Le code est tout simplement la suppression du nœud et ne pas fixer les pointeurs du parent à l'enfant maintenant orphelins.

Est-ce que je manque quelque chose?

Créé 12/04/2011 à 20:58
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
1

Je peux me tromper, mais le code sur le site référencé semble OK. Je ne l'ai pas testé, cependant.

Cela est vrai, car la fonction de suppression prend un argument qui est du noeud de type BSTNode **. Ce n'est pas un pointeur sur le noeud. Ceci est un pointeur vers le pointeur de noeud de parent au nœud lui - même . Cela pourrait être un peu bâclée, mais je dois admettre que après avoir réalisé ce que le code fait, il est un élégant dans sa solution de manière. Alors , quand vous réécrivez (* nœud), vous n'êtes pas réécrire le nœud lui - même , au lieu que vous réécrivez de parent du nœud pointeur vers le noeud . En effet le code fait ce que vous suggérez d'une manière légèrement perverti: D. Nous espérons que vous avez compris ce que je voulais dire et j'espère que je l'ai eu droit.

Je recommande également de lire plus sur les arbres rouge-noir, puisque cet article donne un aperçu que pour créer l'arbre, mais la structure décrite n'a pas de limites asymptotiques pour sa hauteur. Si, par exemple , vous appuyez sur les valeurs triées dans cette structure, il sera une liste reliée au lieu d'un arbre équilibré.


Créé 12/04/2011 à 21:25
source utilisateur

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