Comprendre l'arbre rouge-noir. Partie 2. Équilibrage et insertion

Partie 1. Introduction

Partie 2. Équilibrage et insertion





Ceci est la partie 2 de la série Comprendre l'arbre rouge-noir. Si vous avez manqué la première partie, je vous recommande vivement de la consulter ici . Là, nous avons trié la raison de l'apparition de cchd et mis certaines de ses propriétés sur les étagères.





Dans cette partie, nous examinerons l'insertion et l'équilibrage. Ces choses vont côte à côte, sans équilibrer l'arbre perdra ses propriétés, et cela n'aura guère de sens.





En gardant à l'esprit que kchd est un arbre 2-3 (parfois je vous le rappellerai), nous commencerons immédiatement sa construction. Mais certaines clarifications sont encore nécessaires maintenant.





  1. Tous les nœuds insérés, à l'exception de la racine de l'arbre, sont insérés avec une couleur rouge. Cela s'explique par le fait que nous ajoutons toujours d'abord une valeur à un nœud déjà existant et seulement après cela, nous effectuons un équilibrage (rappelez-vous la situation avec les 4 nœuds résultants).





  2. Dans la première partie, nous avons découvert que nous démontions un arbre rouge-noir du côté gauche , il s'ensuit que les nœuds rouges ne peuvent se trouver qu'à gauche (le cas contraire nécessite un équilibrage).





Traitons également des trois opérations dont nous avons besoin lors de l'équilibrage. Je vous demande de ne pas y penser maintenant et de vous plonger dans plus de détails déjà lors de la construction de l'arbre. Je vais en fournir une description ici afin qu'ils n'interfèrent pas plus tard :)





- . , , -. , . - .





, . , .





( )

. .





illustration de virage à gauche

, parentNode ( parentNode - x, childNode - y) childNode, . ! , , childNode , parentNode , ( , childNode - , , parentColor = RED, ). "" childNode (, tempNode). , . , childNode, parentNode, childNode, , (/) parentNode, parentNode .





( )

, . .





illustration de virage à droite

, parentNode . , parentNode - . , .





, ( , ), parentNode! ( ). .





- .

, .





24. . , , .





, , 5. , .





1 5. . , !





, - ( ). . - . , - . \ . , .





. , , , .





, 3 : , , .





1 , . . 5 - , ( ). 24 , , .





. - . , . - 24. .





, . ! . ( 24 , , )





( )! 2-3 .





, 2-3 ("" + ), , :) , , 2-3 , - , , "" .





. 15. 24. .





3. , 1, -1.





, . . + . ( , , ). , .





! .





, - , .





- 8. , . . , , .





+ .





, ( 15) - , . . , - . . !





- - .





, . , , . . .





. , . 2-3 ( 13 16, , ).





- , , \. .





, , .





  1. -





  2. -





  3. - - , . , , . , !





- , . , , . , !





Vous pouvez maintenant revoir la construction de l'arbre et analyser, vérifier les propriétés du premier article, poser les questions "et si ...?" (croyez-moi, c'est très utile!). En général, c'est tout ce que je voulais vous dire sur l'insertion d'un nœud dans un arbre rouge-noir du côté gauche.





Un peu sur l'opération de recherche de valeur

L'opération d'obtention ne sera pas différente de la recherche dans n'importe quel autre arbre binaire - la couleur n'y est d'aucune façon impliquée.





Conclusion

Ceci conclut notre deuxième partie sur l'insertion et l'équilibrage du ccd. Posez vos questions, critiquez et complétez l'article ci-dessous! Dans la dernière, troisième partie, je parlerai du sujet le plus difficile de l'arbre rouge-noir - la suppression d'un élément. À bientôt:)








All Articles