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 de type BSTNode ** node. Ce n'est PAS un pointeur vers le noeud. Ceci est un pointeur au pointeur de nœud du parent vers le nœud lui-même. Cela peut être un peu bâclé, mais je dois admettre qu'après avoir réalisé ce que fait le code, c'est une solution élégante à sa manière. Alors, quand vous réécrivez (* nœud), vous n'êtes pas réécrire le nœud se, au lieu que vous réécrivez pointeur de parent du nœud au nœud. Effectivement, le code fait ce que vous avez suggéré d'une manière un peu perverse: D. J'espère que vous avez compris ce que je voulais dire et j'espère que j'ai bien compris.
Je vous recommande également de lire davantage sur les arbres rouge-noir, puisque cet article donne un aperçu uniquement de créant l'arbre, mais la structure décrite n'a pas de limites asymptotiques pour sa hauteur. Si, par exemple. vous poussez des valeurs triées dans cette structure, ce sera une liste connectée au lieu d'un arbre équilibré.