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.
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).
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 :)
- . , , -. , . - .
, . , .
( )
. .
, parentNode ( parentNode - x, childNode - y) childNode, . ! , , childNode , parentNode , ( , childNode - , , parentColor = RED, ). "" childNode (, tempNode). , . , childNode, parentNode, childNode, , (/) parentNode, parentNode .
( )
, . .
, 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, , ).
- , , \. .
, , .
-
-
- - , . , , . , !
- , . , , . , !
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:)